作者andy910389 (*微涼的你*)
看板C_Sharp
標題[問題] 關於CreatGraphics
時間Fri Mar 26 13:32:08 2010
最近開始學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