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绘制注意点相关推荐
- MFC+GDI+绘制出雷达余晖效果
MFC+GDI+绘制出雷达余晖效果 1.首先要画出静态的坐标轴,用双缓冲方法在onpain消息中绘制.绘制方法都比较简单.声明一个内存DC,绘制一个圆形,再把坐标轴画上去. void CDlg_Rad ...
- GDI绘制时钟效果,与系统时间保持同步,基于Winform
2019独角兽企业重金招聘Python工程师标准>>> 这是直接在Winform的基础上进行绘制的.接下来,我对时钟进行了封装,封装成一个名为CSharpQuartz的类,效果如下: ...
- C# 数据库系统中使用GDI+绘制柱状图
在C#+SQL Server数据库做系统中,通常需要对数据库中的数据进行绘制图形报表方便经理查看,虽然有很多实用的水晶报表控件和图表控件实现该功能,但我还是想讲讲如何使用GDI绘制简单的柱状图.(推荐 ...
- Windows平台RTMP|RTSP播放器为什么要兼容GDI绘制
为什么要支持GDI 先说结论,Windows平台播放渲染这块,一般来说99%以上的机器都是支持D3D的,实现GDI模式绘制,除了为了好的兼容性外,在远程连接的场景下,D3D创建不成功,需要使用GDI模 ...
- 使用GDI+绘制高质量图和字体(2)
还记得前段时间的一篇文章写了"使用GDI+绘制高质量图和字体",里面用到了SmoothingMode.HighQuality,CompositingQuality.HighQual ...
- 椭圆形印章核心算法浅析及使用GDI+绘制椭圆印章的方法
1. 引言 几年前,笔者在做某项目时,需要根据开票方的实际信息(含企业名称,社会信用代码,印章编号)绘制某椭圆形的专用章,加盖到PDF版式文件上,并使用开票方的证书信息进行签名,以防范版式文件伪造.抵 ...
- D2D引擎与GDI\GDI+绘制效果对比
本例主要是对比D2D和GDI在绘制文字.线条的区别,以及D2D与GDI+在绘制图片时的区别. D2D是基于COM组件开发的,使用前的CoInitialize(NULL)是必须的:另外,GDI+的初始化 ...
- 在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言[转]
在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言 作者:网友供稿 点击:4 gdi+ 是gdi(windows 早期版本提供的图形设备接口)的后续版本,是microsoft ...
- C# WinForm 工作流设计 工作流程图拖拽设计 +GDI 绘制工作流程图
C# WinForm 工作流设计 工作流程图拖拽设计 +GDI 绘制工作流程图 大概功能说明一下: 1.支持拖动绘制工作节点 2.支持移动每个节点的移动 3.支持直线连接节点 4.支持节点移动连接线自 ...
最新文章
- Open***异地机房互连以及负载均衡高可用解决方案
- Android学习笔记——Intents 和 Intent Filters(二)
- Spring ListFactoryBean实例
- 在网页中嵌入flash之标签
- Linux 命令 之查看程序占用内存
- tool vmmap 配置符号文件 symbolic file
- python + opencv: kalman 跟踪
- mac怎么查看gitlab的注册邮箱_单位企业邮箱是什么?公司邮箱怎么申请注册?
- Centos安装桌面系统并设置成默认启动
- 代码之美~利用构造方法实现模块的解耦
- 使用GDB进行调试 -- 1 应用场景
- Java 设计模式 之 单例模式(Singleton)
- jclasslib 插件安装及使用
- Windows环境下在局域网内建立Git远程仓库
- python合并word表格_python docx处理word文档中表格合并问题
- 动画基础,3种动画方式
- 计算机科学见刊之后多久检索,论文见刊后多久可以检索
- 普通容器、系统容器和安全容器
- 让键盘发出老婆的声音,键盘按键提示音工具
- 《从总账到总监》读书笔记
热门文章
- 敏捷估计与规划pdf
- NHibernate教程(5)--CRUD操作
- linux安装mongodb(设置非root用户和开机启动)
- java线程中的notifyAll唤醒操作
- java httpclient发送json 请求 ,go服务端接收
- android编程常见问题- Resource ID #0x7f070001 type #0x12 is not valid
- LevelDB 之 arena
- GestureDetector学习之左右滑动,上下滑动屏幕切换页面
- rust房屋建造蓝图_都说蓝图,而不是白图、红图,你知道为什么?
- Visual.Assist.X.V10.7.1946的汉化破解补丁