关于gdi+使用问题

杀时间 2006-04-13 08:42:28
知道在mfc中可以在一个memDC中画,画好后再一次性BitBlt到pDC中,
在gdi+中也可以在一个graphics中画,画好后一次性复制到目地地中么?
请高手指教,可以给出示例的话最好,谢谢!
...全文
341 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
pomelowu 2006-04-14
  • 打赏
  • 举报
回复
用GDI+实现双缓冲会复杂些:Graphics虽然是对HDC的封装,但是却没有BitBlt之类的方法(封装在了Image/Bitmap的若干函数中)。用GDI+做双缓冲的方法大致如下:
// create a bitmap
Bitmap bm( rc.width(), rc.height());
// create a graphics object based on the bitmap
Graphics dc( &bm );
// draw graphics using GDI+ on 'dc'
/*DoSomeDrawing( dc, rc, ... )*/
// blit to screen
/*Graphics( hdc )*/.DrawImage( &bm, gdi_xx::point_t( rc.left, rc.top ));
比GDI的API方式手续复杂了些——多次的构造对象和自己的绘制中还可能出现的额外操作。

另外,在GDI+中使用双缓冲应该知道,GDI+提供了一个CachedBitmap类以及Graphics::DrawCachedBitmap方法。记得使用它们以提高双缓冲绘图的效率。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧