→ SnowyFox:我猜應該是缺了將paint_f方法加到form的Paint事件中 08/23 23:08
→ m13m13m:請問是甚麼意思... 08/23 23:11
→ m13m13m:Form的paint事件指的是? 08/23 23:11
→ SnowyFox:Paint事件會在控制項繪製的時候執行 08/23 23:11
→ SnowyFox:可以查一下Form的Event會比較了解執行時機和次序 08/23 23:12
→ m13m13m:請問是要到TOOLBOX上找一個這種button嗎? 08/23 23:14
→ m13m13m:我是直接在Form.cs上打入這些指令,沒有多做什麼... 08/23 23:14
→ m13m13m:所以所謂的"控制項"繪製指的是... 08/23 23:15
→ m13m13m:不好意思 我還太菜了 08/23 23:15
→ SnowyFox:方法一:在表單上選取屬性/找到Paint方法/選取paint_f 08/23 23:19
→ SnowyFox:方法二:在 Initialize()方法中增加 08/23 23:20
→ m13m13m:請問所謂的菜單是project -> XXX.property嗎? 08/23 23:21
→ SnowyFox:Form1.Paint += paint_f(參數); 08/23 23:24
→ m13m13m:加在InitializeComponent() ? 08/23 23:25
→ SnowyFox:沒打清楚,是Form1()的InitializeComponent方法之後 08/23 23:28
→ SnowyFox:表單指的是視窗的設計頁,選取表單/檢視/屬性視窗/ 08/23 23:30
→ SnowyFox:屬性視窗中的閃電符號會列出表單支援的方法 08/23 23:32
→ m13m13m:n...我試一下 好像有點小問題 不過我找到閃電了 08/23 23:36
→ m13m13m:是指property window 下面的那個嗎? 08/23 23:36
→ SnowyFox:是 08/23 23:37
→ m13m13m:所以那個函式不能被呼叫嗎? T - T 08/23 23:40
→ m13m13m:另外我的form上面還有load: 把圖load進picturebox 08/23 23:41
→ m13m13m:和一個exit. 一把paint那邊點選後 就連一開始的載圖都不行 08/23 23:42
→ SnowyFox:他是將方法掛在Form的事件上 在事件發生時會執行該段程式 08/23 23:42
→ m13m13m:想必程式是一開始就跑paint那段程式碼八xd... 08/23 23:43
→ m13m13m:所以form一出來就開始畫畫了阿! 08/23 23:43
→ m13m13m:可是我想要把圖載入後再到上面畫畫 不想到form上面畫畫xd. 08/23 23:44
→ SnowyFox:是的 在你看到視窗跑出來的時候 圖就畫完了 08/23 23:48
→ m13m13m:那怎麼互動阿?xd....我按button 它畫圖在form上的美夢... 08/23 23:52
→ m13m13m:先跟您說一百聲謝謝! SnowyFox 08/23 23:56
→ SnowyFox:自己建立方法 不使用事件 原程式 Form1_Paint中的程式碼 08/24 00:01
→ SnowyFox:複製到自訂的方法中 最後的 e.graphics.xxx 替換為 08/24 00:02
→ SnowyFox:Graphics g = this.CreateGraphics(); 08/24 00:03
→ SnowyFox:g.DrawPath(Pens.Black, gp); g.Dispose(); 08/24 00:04
→ SnowyFox:然後你再從按鈕的 Click 事件去呼叫這個方法 08/24 00:05
→ SnowyFox:我也是菜鳥 也有很多不會 當做學習吧 呵呵 08/24 00:05
→ m13m13m:我想一下下喔 ... 08/24 00:07
→ m13m13m:ok 其實您說的方法我一開始是類似那樣的 但是因為g 是 08/24 00:13
→ m13m13m:Graphics 所以少了一個很重要的method 就是.CloseFigure() 08/24 00:15
→ m13m13m:所以我畫的curve和直線 VS非常之雞婆難以形容 居然給老子 08/24 00:15
→ m13m13m:把他們的尾端連起來....... 08/24 00:16
→ SnowyFox:你可以去MSDN查一下CloseFigure這個方法 根據說明 08/24 00:19
→ SnowyFox:他會將目前畫的圖形封閉沒錯 如果不要的話 你可以不呼叫 08/24 00:20
→ SnowyFox:這個方法 08/24 00:20
→ m13m13m:不...是他自己會把我的曲線圖s 的尾巴連起來,根據書上指示 08/24 00:24
→ m13m13m:要用這個method 但無奈要用 picturebox.creategraph(); 08/24 00:24
→ m13m13m:就是Graphics paint = plate.CreateGraphics(); 沒有 08/24 00:25
→ m13m13m: .closeFigure()... 好謝謝你 我去msdn看看closeFigure. 08/24 00:25
→ SnowyFox:CloseFigure 是 GraphicsPath 的方法 08/24 00:28
→ SnowyFox:Graphics 上面是沒有這個方法的 要不要檢查一下用的物件 08/24 00:29
→ m13m13m:對阿 沒有這個方法所以無法阻止尾巴互連的麻煩事 08/24 00:38
→ SnowyFox:另外 你遇到的問題 我猜可以用把不想要封閉的圖形集中到 08/24 00:38
→ SnowyFox:最後 然後最後不要呼叫 CloseFigure 08/24 00:40
→ SnowyFox:呃 你不是有使用 GraphicsPath就是上面程式的 gp 物件嗎? 08/24 00:41
→ m13m13m:我不能用graphicspath 只能用Graphics因為那樣才能 08/24 00:46
→ m13m13m:GraphicsPath paint= picturebox.CreateGraphics(); 08/24 00:47
→ m13m13m:才能只針對picturebox去做圖 所以書上有跟我說甚麼 08/24 00:48
→ m13m13m:先封閉再打開 那是在GraphicsPath的東西 我第一步就無法 08/24 00:48
→ m13m13m:寫GraphicsPath paint = plate.CreateGraphics();了 08/24 00:49
→ m13m13m:00:47那行修正為: Graphics paint= picturebox.Create(); 08/24 00:50
→ SnowyFox:基本上Graphics和GraphicsPath應該是沒有什麼衝突 就像上 08/24 01:12
→ SnowyFox:面範例的自己new一個就可以使用了 08/24 01:13
→ SnowyFox:只有你在繪製上去的時候需要取得控制項的Graphics物件 08/24 01:14
→ SnowyFox:這個部份以你的需要應該是picturebox.CreateGraphics() 08/24 01:15
→ SnowyFox:來畫在你指定的控制項上 08/24 01:16
→ SnowyFox:或是可以考慮使用Graphics物件的DrawXXX方法 08/24 01:24
→ SnowyFox:另外 我不確定你在00:49的語句是否只是誤打 08/24 01:25
→ SnowyFox:Graphics和GraphicsPath是不同的物件 08/24 01:26
→ SnowyFox:picturebox.CreateGraphics取回的是Graphics物件 08/24 01:27
→ SnowyFox:所以無法指定給GraphicsPath物件,要使用的話,要new一個 08/24 01:28
→ SnowyFox:GraphicsPath物件來使用 08/24 01:28
→ m13m13m:你說的沒錯,你好認真 先在謝謝你 我再想想看解決方法xd... 08/24 01:36
→ m13m13m:解決了 唉...結果跟這些都沒關係 是我忘記把變數重新clear 08/24 02:35
→ m13m13m:明明是犯過n次的錯誤 但卻又浪費了3/4h 真是tmd T - T 08/24 02:36
→ m13m13m:不過要十分感謝SnowyFox 我又學到了一些新東西 謝謝你! 08/24 02:36