MemDC,GDI绘制注意点
1.MemDC中的MemBmp大小一定要設定好,經常設小了,后面的繪不出來,同時最后dc.bitblt時,大小一定要和MemBmp 一致,同樣經常是MemBmp必變了,bitblt的rcDest沒變,結果還是繪不出來。
2.MemDC上繪制是在(0,0, MemBmp.width, MemBmp.Height)區域上繪的,經常rc設成dc所在窗口的坐標了。
3.MemDC.SelectObject,可以在選了bmp,同時再選pen,當然不是再選bmp,不然原來的畫布就被換成新的bmp了,那就白畫了
4.MemDC中可以再次多緩沖,當然這時
CDC MemDc2 ;
?MemDc2 .CreateCompatibleDC(&MemDc) ;//它就把MemDc當成它的dc了,所以我們可以在MemDc2中SelectObject,再繪到MemDc中
5.去掉焦點的虛線框,除了要把WM_SETFOUCE干掉,還得設定焦點到其他窗口,經常是不設,想破腦袋也沒反應過來,靠,怎么虛框還在!
6.MemDc中當然可以使用gdi+,這時gdi+初始化的句柄是(MemDc.GetSafeHdc()) ;經常寫成(dc.GetSafeHdc()),結果gdi+是直接以dc的那個坐標系來繪了。
7.gdi+經常存在資源未釋放的BUG
如:Image::FromStream:MSDN:The FromStream method creates a new Image object based on a stream
所以必須delete
如???IStream::Release 在MSDN解釋是is similar to a close funtion on a file,Once released, the stream object ?is no longer valid and cannot be used
網上很多代碼說
其實這是在CreateStreamOnHGlobal的第二個參數設為true的情況下,MSDN:If set to TRUE, the final release will automatically free the hGlobal parameter.
轉載于:https://www.cnblogs.com/hgy413/archive/2011/09/02/3693598.html
總結
以上是生活随笔為你收集整理的MemDC,GDI绘制注意点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 日志处理中一些shell命令技巧
- 下一篇: Web-DispatcherServle