最近绘制老犯同样的错误,记录下:

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绘制注意点相关推荐

  1. MFC+GDI+绘制出雷达余晖效果

    MFC+GDI+绘制出雷达余晖效果 1.首先要画出静态的坐标轴,用双缓冲方法在onpain消息中绘制.绘制方法都比较简单.声明一个内存DC,绘制一个圆形,再把坐标轴画上去. void CDlg_Rad ...

  2. GDI绘制时钟效果,与系统时间保持同步,基于Winform

    2019独角兽企业重金招聘Python工程师标准>>> 这是直接在Winform的基础上进行绘制的.接下来,我对时钟进行了封装,封装成一个名为CSharpQuartz的类,效果如下: ...

  3. C# 数据库系统中使用GDI+绘制柱状图

    在C#+SQL Server数据库做系统中,通常需要对数据库中的数据进行绘制图形报表方便经理查看,虽然有很多实用的水晶报表控件和图表控件实现该功能,但我还是想讲讲如何使用GDI绘制简单的柱状图.(推荐 ...

  4. Windows平台RTMP|RTSP播放器为什么要兼容GDI绘制

    为什么要支持GDI 先说结论,Windows平台播放渲染这块,一般来说99%以上的机器都是支持D3D的,实现GDI模式绘制,除了为了好的兼容性外,在远程连接的场景下,D3D创建不成功,需要使用GDI模 ...

  5. 使用GDI+绘制高质量图和字体(2)

    还记得前段时间的一篇文章写了"使用GDI+绘制高质量图和字体",里面用到了SmoothingMode.HighQuality,CompositingQuality.HighQual ...

  6. 椭圆形印章核心算法浅析及使用GDI+绘制椭圆印章的方法

    1. 引言 几年前,笔者在做某项目时,需要根据开票方的实际信息(含企业名称,社会信用代码,印章编号)绘制某椭圆形的专用章,加盖到PDF版式文件上,并使用开票方的证书信息进行签名,以防范版式文件伪造.抵 ...

  7. D2D引擎与GDI\GDI+绘制效果对比

    本例主要是对比D2D和GDI在绘制文字.线条的区别,以及D2D与GDI+在绘制图片时的区别. D2D是基于COM组件开发的,使用前的CoInitialize(NULL)是必须的:另外,GDI+的初始化 ...

  8. 在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言[转]

    在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言 作者:网友供稿 点击:4 gdi+ 是gdi(windows 早期版本提供的图形设备接口)的后续版本,是microsoft ...

  9. C# WinForm 工作流设计 工作流程图拖拽设计 +GDI 绘制工作流程图

    C# WinForm 工作流设计 工作流程图拖拽设计 +GDI 绘制工作流程图 大概功能说明一下: 1.支持拖动绘制工作节点 2.支持移动每个节点的移动 3.支持直线连接节点 4.支持节点移动连接线自 ...

最新文章

  1. Open***异地机房互连以及负载均衡高可用解决方案
  2. Android学习笔记——Intents 和 Intent Filters(二)
  3. Spring ListFactoryBean实例
  4. 在网页中嵌入flash之标签
  5. Linux 命令 之查看程序占用内存
  6. tool vmmap 配置符号文件 symbolic file
  7. python + opencv: kalman 跟踪
  8. mac怎么查看gitlab的注册邮箱_单位企业邮箱是什么?公司邮箱怎么申请注册?
  9. Centos安装桌面系统并设置成默认启动
  10. 代码之美~利用构造方法实现模块的解耦
  11. 使用GDB进行调试 -- 1 应用场景
  12. Java 设计模式 之 单例模式(Singleton)
  13. jclasslib 插件安装及使用
  14. Windows环境下在局域网内建立Git远程仓库
  15. python合并word表格_python docx处理word文档中表格合并问题
  16. 动画基础,3种动画方式
  17. 计算机科学见刊之后多久检索,论文见刊后多久可以检索
  18. 普通容器、系统容器和安全容器
  19. 让键盘发出老婆的声音,键盘按键提示音工具
  20. 《从总账到总监》读书笔记

热门文章

  1. 敏捷估计与规划pdf
  2. NHibernate教程(5)--CRUD操作
  3. linux安装mongodb(设置非root用户和开机启动)
  4. java线程中的notifyAll唤醒操作
  5. java httpclient发送json 请求 ,go服务端接收
  6. android编程常见问题- Resource ID #0x7f070001 type #0x12 is not valid
  7. LevelDB 之 arena
  8. GestureDetector学习之左右滑动,上下滑动屏幕切换页面
  9. rust房屋建造蓝图_都说蓝图,而不是白图、红图,你知道为什么?
  10. Visual.Assist.X.V10.7.1946的汉化破解补丁