看板 C_Sharp 關於我們 聯絡資訊
最近開始學C#視窗程設 然後一開始學道畫線都是在 private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawLine(myPen, 0, 0, 20,30); } 這樣的寫法就可以畫出一條線 可是現在進入比較進階的階段 是要根據滑鼠的點 一個接一個連起來 但是關於下面紅色的那個部分..他沒有註解...我實在看不太懂 去MSDN查也只說 建立控制項的 Graphics 為什麼要先建立阿?那以前我只單純在介面上畫出一條線時 就不用先建立這個.. 想問this.CreateGraphics()他的功用在哪呀?? private void Form1_MouseDown(object sender, MouseEventArgs e) { Graphics G = this.CreateGraphics(); if (e.Button == MouseButtons.Left) // 滑鼠左鍵 { if (points.Count == 0) // 第一個點 畫出 小橢圓形 G.DrawEllipse(Pens.Black, e.Location.X - 3, e.Location.Y - 3, 6, 6); else // 第二個點 以後 就和上一個點 相連 G.DrawLine(Pens.Black, points[points.Count - 1], e.Location); points.Add(e.Location); // 把點的資料 加到 動態陣列中 } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.60.253.80 ※ 編輯: andy910389 來自: 61.60.253.80 (03/26 13:32) ※ 編輯: andy910389 來自: 61.60.253.80 (03/26 13:33)
F23ko:把視窗當成畫布 03/26 13:38
F23ko:我一開始學就是第二種用法,倒是沒看過第一種 03/26 13:39
andy910389:所以只要在視窗上畫東西的都要先建立那個囉~? 03/26 13:44
andy910389:不過還是想知道兩者的差別在哪..因為第一種也可畫線說 03/26 13:46
※ 編輯: andy910389 來自: 61.60.253.80 (03/26 13:48)
james732:我比較傾向第一種寫法 全部都在 Paint_event 做好 03/26 13:51
james732:第二種方法會有視窗無法自動重繪的問題 03/26 13:52
james732:最明顯的差異 原po把視窗最小化再恢復就會看得出來了 03/26 13:52
andy910389:最小化再恢復沒什麼變耶~看code似乎沒有重繪機制 03/26 13:55
andy910389:但我記得之前的範例有每做一次控制就重繪一次 03/26 13:56
andy910389:那種應該就會出現不同了吧我想...謝謝樓上各位大大:D 03/26 13:56
andy910389:我剛試了一下別的重繪範例 發現第二種會一閃一閃的 03/26 14:04
andy910389:而用第一種好像就不會~所以要看有沒有重繪機制吧我想 03/26 14:05
F23ko:唔.... 第二種 我也遇到一閃一閃的問題.... 03/26 14:51