日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MemDC,GDI绘制注意点

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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
網上很多代碼說

IStream* pstm; HRESULT ht = CreateStreamOnHGlobal(m_hMem,FALSE,&pstm); pstm->Release(); 說什么釋放IStream指針,同時釋放了m_hMem
其實這是在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绘制注意点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。