[問題] 小畫家功能

看板C_Sharp作者 (MyBad)時間4年前 (2019/07/12 12:57), 編輯推噓1(1014)
留言15則, 3人參與, 4年前最新討論串2/4 (看更多)
※ 引述《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); } 可是這樣寫連畫出來都沒有,不知道哪裡出了問題 。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.214.146.126 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1562907452.A.582.html

07/12 20:04, 4年前 , 1F
練習畫東西不用這麼麻煩,不需要任何bitmap
07/12 20:04, 1F

07/12 20:05, 4年前 , 2F
mousemove事件內直接依序呼叫兩個g的函式即可:
07/12 20:05, 2F

07/12 20:06, 4年前 , 3F
1. g.Clear,清除先前繪製,顏色可用picturebox的背景色
07/12 20:06, 3F

07/12 20:07, 4年前 , 4F
2. g.DrawLine,跟你原本呼叫的一樣
07/12 20:07, 4F

07/12 20:08, 4年前 , 5F
Graphics都用pictureBox1取得的這個物件即可
07/12 20:08, 5F

07/12 22:31, 4年前 , 6F
K大 謝謝!不過這樣寫是不是每畫一次就不見,我要的功
07/12 22:31, 6F

07/12 22:31, 4年前 , 7F
能是在畫圓或畫方塊或畫線,可以先預覽將畫出的圖案,
07/12 22:31, 7F

07/12 22:31, 4年前 , 8F
並留下圖案繼續畫畫
07/12 22:31, 8F

07/13 07:25, 4年前 , 9F
記錄每次畫的,每次移動後都重畫
07/13 07:25, 9F

07/13 22:23, 4年前 , 10F
我就是想這樣 但是他好像擷取不了picture box的image
07/13 22:23, 10F

07/14 10:26, 4年前 , 11F
我比較建議寫程式之前先想好大致的架構跟做法
07/14 10:26, 11F

07/14 10:27, 4年前 , 12F
我舉例的程式會讓之前畫的消失,是因為我的例子跟你的
07/14 10:27, 12F

07/14 10:27, 4年前 , 13F
目的不完全相同,如果要改成你的目的,稍微調整一下就好
07/14 10:27, 13F

07/14 10:29, 4年前 , 14F
j大的想法就是一種例子,搭配Graphics的儲存函式即可
07/14 10:29, 14F

07/14 12:48, 4年前 , 15F
了解 謝謝兩位!
07/14 12:48, 15F
文章代碼(AID): #1TA1CyM2 (C_Sharp)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 2 之 4 篇):
文章代碼(AID): #1TA1CyM2 (C_Sharp)