看板 Visual_Basic 關於我們 聯絡資訊
請輸入專案類型(網站專案或者應用程式專案):應用程式 小弟最近在寫一個繪圖相關的簡易程式,當視窗改變時我希望先將原本的線給清掉 接著重新畫上去,用的指令是: Me.Refresh() Me.CreateGraphics.DrawLine(BlackPen, X1, Y1, X2, Y2) 會這樣做的原因是因為CreateGraphics所產生的線很容易被其它東西蓋掉 因此我的程式內會有大量重繪圖的指令(但是這些指令都是在我做了某些動作時才會發生 例如我畫了另一條線時 但是我遇到了兩個問題: 1. 首先,我在繪圖區加上一條線 http://imgur.com/kQmbMzy 2. 假如這時候我開啟別的程式,把繪圖區蓋住了,這個部分的線就會不見 http://imgur.com/NO5kwyW http://imgur.com/o60CAnw 我找了很久,還是找不到這個事件的名稱,也就是當這個Form變成最上層視窗時動作 3. 如果我改成縮小視窗的話,不足的部分會暫時被遮蔽 http://imgur.com/HPmcmFV 4. 當我重新恢復成最大化時(直接按右上角),原本被蓋住的部分不會重新出現 http://imgur.com/QfrfAU6 但是我如果改用手動拉邊框的話,線則會一直存在 5. 當我最小化之後再放大,一樣的狀況是全部的線都會消失 http://imgur.com/RKRdRQl 想請問是否有辦法讓所有線都能在視窗大小、順序改變時一直存在? 我有想過用 Me.MouseMove 事件,但是這個事件會導致程式瘋狂畫圖,搞到lag 感謝各位鄉民的幫忙 > < 我發現Resize其實有動作,但是線就是畫不出來... 至於第一個狀況,我有試過GotFocus的指令,但是無效 ※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1453312672.A.97D.html ※ 編輯: dogs1231992 (140.112.22.13), 01/21/2016 02:01:09
niklee29: 我是把繪圖完的結果放到 image 緩衝,在丟到picturebox 01/21 08:18
niklee29: 的image屬性就解決了,這樣做重繪時也不會有閃爍的情況 01/21 08:18
evil2004: 試試Activate 01/21 08:48
MOONRAKER: 以前都馬開一個PictureBox,然後 01/21 11:57
MOONRAKER: (1) 照 picturebox 的大小做一個 bitmap 01/21 11:57
MOONRAKER: (2) 做一個 graphics = graphics.fromimage(bitmap) 01/21 11:57
MOONRAKER: (3) 畫在bitmap上 01/21 11:58
MOONRAKER: (4) 畫好把那個bitmap再指定給picturebox 01/21 11:58
MOONRAKER: 接著就可以保留那個bitmap一直重複(3)(4) 01/21 11:59
dogs1231992: 感謝各位的幫忙,我剛剛發現我昨天用遠端寫code 01/21 14:51
dogs1231992: 會發生上述現象,但是我現在回到電腦前,用Resize就 01/21 14:52
dogs1231992: 不會有這個現象了,但是我還是會改用PictureBox的方 01/21 14:52
dogs1231992: 法來改寫這個部分 :) 01/21 14:52
MOONRAKER: 是因為連線軟體沒有重畫那塊? 01/21 17:18