C_Sharp 板


LINE

我看書上的範例: using ~~~(省) namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { GraphicsPath gp = new GraphicsPath(); // GraphicsPath物件 Point p1 = new Point(10, 20); // 直線的兩端 Point p2 = new Point(100, 20); gp.AddLine(p1, p2); // 將 直線 加入到 GraphicsPath物件 gp.CloseFigure(); // 先封閉 第一條直線 Point p3 = new Point(10, 50); // 直線的兩端 Point p4 = new Point(100, 50); gp.AddLine(p3, p4); // 將第二條直線 加入到 GraphicsPath物件 e.Graphics.DrawPath(Pens.Black, gp); // 繪出GraphicsPath物件 } } } 我很好奇why我們都沒有call 畫圖的那個method 就是arguments中有 (object sender, PaintEventArgs e) 那行的程式 他就會自動執行所以可以畫圖 到底是誰call 那行程式導致可以畫圖?? 最重要的是... 我也是按照 ********************************************************************* using ~~ 一堆一堆 namespace test001 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void paint_f(object sender, PaintEventArgs e) { GraphicsPath paint = new GraphicsPath(); ........一堆 e.Graphics.DrawCurve(pen, pt); } } } 去做 就不會自動畫圖 / \ 好幾天了 好悶阿 請高手指點 --



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







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP