[問題] 用win32 api 寫類似小畫家的程式問題

看板C_and_CPP (C/C++)作者 (GreenLinux)時間10年前 (2015/07/04 13:53), 編輯推噓3(3014)
留言17則, 8人參與, 最新討論串1/3 (看更多)
Visual C++ (Win32 api) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) Visual C++ (Win32 api) 問題(Question): 寫一個類似 小畫家的程式. 但我發現在畫線時,用 invalidate()重畫只會 畫出這次要畫的線段, 之前的線段會不見 例如: 若線段上有 (x0, y0)連到 (x1, y1) 再連到 (x2, y2) --> (x3, y3) 但每次只出現: (x0, y0) --> (x1, y1) 下一時間只出現:(x1, y1) --> (x2, y2); (x0, y0) --> (x1, y1)那段不見了.. 我的code 大致上是: http://paste.plurk.com/show/2198891/ 請各位協助.. 希望能連在一起, 難道真的要將所有的點都存起來, 然後每次重畫時都要 從 第0點畫到第N點, 下一刻就要從第0點畫到第N+1點??? 謝謝... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.239.41.43 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1435989180.A.F7E.html

07/04 14:07, , 1F
應該想辦法把之前畫的XY都存起來吧??
07/04 14:07, 1F

07/04 14:37, , 2F
請問難道小畫家也是每次都重畫所有點的嗎?
07/04 14:37, 2F

07/04 14:41, , 3F
我想會不見是因為每次都建立新的DC跟bitmap
07/04 14:41, 3F

07/04 14:43, , 4F
把它們存起來重複利用應該就不用重畫
07/04 14:43, 4F

07/04 19:01, , 5F
同意樓上 好像也可以先擷取原來的圖再畫新的
07/04 19:01, 5F

07/04 19:02, , 6F
只是我沒試過 不知道下面這個連結有用嗎?
07/04 19:02, 6F

07/04 19:03, , 7F
http://tinyurl.com/oe27kq4 msdn capturing an Image
07/04 19:03, 7F

07/04 19:15, , 8F
我記得以前看過類似的程式也是把之前畫的都存起來
07/04 19:15, 8F

07/04 19:16, , 9F
可能是因為還要有redo跟undo功能,存起來比較方便
07/04 19:16, 9F

07/04 19:35, , 10F
謝謝各位意見
07/04 19:35, 10F

07/04 19:37, , 11F
請問還有什麼範例可提供給我參考嗎?謝
07/04 19:37, 11F

07/04 23:25, , 12F
小畫家是蠻多可以練的東西 , 像是 design pattern ...
07/04 23:25, 12F

07/05 20:13, , 13F
http://codepad.org/XHOD8afy 陽春版小畫家
07/05 20:13, 13F

07/05 20:14, , 14F
CreateDIBSection 會回傳點陣圖的 HANDLE 及記憶體位址
07/05 20:14, 14F

07/05 20:15, , 15F
可以用 GDI 也可以直接存取記憶體
07/05 20:15, 15F

07/05 20:17, , 16F
畫完用 UpdateLayeredWindow 直接更新
07/05 20:17, 16F

07/07 16:34, , 17F
hMemBmp不要砍掉他就是你畫面上的資料你就一值重複畫上去
07/07 16:34, 17F
文章代碼(AID): #1LbtIyz- (C_and_CPP)
文章代碼(AID): #1LbtIyz- (C_and_CPP)