[問題] 小畫家功能

作者: amen1387 (MyBad)   2019-07-12 12:57:30
※ 引述《fantoccini (失控的顏色)》之銘言:
: 這幾天為了寫視窗開始學C#
: 再練習的時候遇到一個問題
: 例如我要畫一個矩形
: 當Mouse按下後 然後移動 然後放開
: 最後的結果是一個矩形 但是
: 我的滑鼠在移動的過程中 無法看出
: 這個矩形跟隨著你的滑鼠移動
: 簡單的說 就是小畫家 圈選矩形的那個功能
: 感覺上是要一直重繪 不知道是不是這樣
我把drawline寫在mouse_up的話,就跟原本樓主的問題一樣,但試著寫在mouse_move他就
會一直出現
我現在有想到的方式是在mousedown的時候把picture box擷取起來
Bitmap lastimage=new Bitmap(picturebox1.width,picturebox1.height);
Garphcs Imagegrapics=Graphics.FromImage(lastimage);
然後在mousemove時
Graphics p =pictureBox1.CreateGraphics();
if(e.Button==MouseButton.Left)
{
p=image graphics;
p.DrawLine(pen1,downX,downY,e.X,e.Y);
}
可是這樣寫連畫出來都沒有,不知道哪裡出了問題
作者: kobe8112 (小B)   2019-07-12 20:04:00
練習畫東西不用這麼麻煩,不需要任何bitmapmousemove事件內直接依序呼叫兩個g的函式即可:1. g.Clear,清除先前繪製,顏色可用picturebox的背景色2. g.DrawLine,跟你原本呼叫的一樣Graphics都用pictureBox1取得的這個物件即可
作者: amen1387 (MyBad)   2019-07-12 22:31:00
K大 謝謝!不過這樣寫是不是每畫一次就不見,我要的功能是在畫圓或畫方塊或畫線,可以先預覽將畫出的圖案,並留下圖案繼續畫畫
作者: johnpage (johnpage)   2019-07-13 07:25:00
記錄每次畫的,每次移動後都重畫
作者: amen1387 (MyBad)   2019-07-13 22:23:00
我就是想這樣 但是他好像擷取不了picture box的image
作者: kobe8112 (小B)   2019-07-14 10:26:00
我比較建議寫程式之前先想好大致的架構跟做法我舉例的程式會讓之前畫的消失,是因為我的例子跟你的目的不完全相同,如果要改成你的目的,稍微調整一下就好j大的想法就是一種例子,搭配Graphics的儲存函式即可
作者: amen1387 (MyBad)   2019-07-14 12:48:00
了解 謝謝兩位!

Links booklink

Contact Us: admin [ a t ] ucptt.com