社区
图形处理/算法
帖子详情
清空DC的办法?
xiaokun111
2010-09-19 07:48:36
用GDI命令在EMF DC中绘图,然后存为EMF文件,EMF文件中会保存着一系列绘图的命令:
如果绘图一半时发现绘制错误,目前的办法是通过白色填充来覆盖以前绘制的痕迹,
这样会在EMF文件中留有一堆废弃的GDI命令,会使EMF增大。
能否用一种方法,在发现绘制错误时,将DC清空重新绘制?
前题是同一个EMF DC,不能新生成EMF DC。
...全文
424
13
打赏
收藏
清空DC的办法?
用GDI命令在EMF DC中绘图,然后存为EMF文件,EMF文件中会保存着一系列绘图的命令: 如果绘图一半时发现绘制错误,目前的办法是通过白色填充来覆盖以前绘制的痕迹, 这样会在EMF文件中留有一堆废弃的GDI命令,会使EMF增大。 能否用一种方法,在发现绘制错误时,将DC清空重新绘制? 前题是同一个EMF DC,不能新生成EMF DC。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hastings
2010-09-20
打赏
举报
回复
~~自己设计个结构表示各种GDI命令,画一个存一个进链表~~哪一个错了,就从链表中删除哪一个~~
fandh
2010-09-20
打赏
举报
回复
这个没有什么好的办法,所有的GDI资源,你创建了,那么,你就得释放!特别是有些资源被设备在使用,你反而释放不了,所以,你必须保证,在释放前,恢复设备的环境!这点很重要!
比如顶一个pen
CPen pen(solid,1,rgb());
CPen *poldPen = pDC->SelectObject(&pen);
.............//画图
pen.DeleteObject();//前面没有调用pDC->SelectObject(poldpen);这时候DeleteObject返回false;删除不成功!
如果,在pen.DeleteObject();前调用pDC->SelectObject(poldpen);恢复一下设备环境,那么,删除就没有问题了!资源就能释放成功!
fandh
2010-09-20
打赏
举报
回复
这种情况下,估计只有多分解、多封装来解决这个复杂的问题了!
微软的这个,的确用起来比较难受!
xiaokun111
2010-09-20
打赏
举报
回复
看来没什么办法了,在EMF DC中绘制,GDI命令就像是泼出去的水了难以收回
比如新建一个EMF,在EMF DC中绘制复杂的图形,可能会用到几千行的GDI命令,
如果绘制成功则EMF文件有200K.
如果绘制完时发现绘制出错,则只能由白色底刷填充整个DC,再重新绘制,
这样存储后的EMF文件大小为400K,有一半都是垃圾命令,还清除不了。
Hiiishe
2010-09-20
打赏
举报
回复
那BeginPath和EndPath呢?
xiaokun111
2010-09-19
打赏
举报
回复
[Quote=引用 1 楼 hucailai 的回复:]
先释放,然后重新申请行吗?
[/Quote]
这不是我需要的答案,我需要的是清除以前GDI的命令
hucailai
2010-09-19
打赏
举报
回复
先释放,然后重新申请行吗?
xiaokun111
2010-09-19
打赏
举报
回复
关键是GDI命令画在DC上犹如泼出去的水不能收回
xiaokun111
2010-09-19
打赏
举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]
可以参考绘图中的Undo Redo的做法
[/Quote]
具体怎么做?
bb = getdc(0);
aa = savedc(bb);
Ellipse(bb,50, 50, 300, 500);
RestoreDC(bb,aa);
如果用SaveDC和RestoreDC椭圆还是画在了屏幕上
tubo_true
2010-09-19
打赏
举报
回复
[Quote=引用 3 楼 jcily 的回复:]
准备绘制开始时调用
int m_nPreSave = SaveDC();
遭遇错误时
if ( ERROR() )
RestoreDC(m_nPreSave);
[/Quote]
先DeleteObject,然后ReleaseDC
up
Abcix
2010-09-19
打赏
举报
回复
先DeleteObject,然后ReleaseDC
Eleven
2010-09-19
打赏
举报
回复
可以参考绘图中的Undo Redo的做法
Hiiishe
2010-09-19
打赏
举报
回复
准备绘制开始时调用
int m_nPreSave = SaveDC();
遭遇错误时
if ( ERROR() )
RestoreDC(m_nPreSave);
郁金香vc过驱动保护
于是没
办法
,我用另一种方法,直接在HOOK函数的入口点a8724af4修改为jmp ObOpenObjectByPointer,这样就成功恢复了,没有蓝屏 用这种方法把以上三个函数全恢复了 郁金香驱动 2. NtWriteVirtualMemory ...
基于SIP开发软件电话的一些资源(转自YOUTOO)
C898C3C40396
DC
11!955.entry 2007/1/30 oSIP协议栈(及eXoSIP,Ortp等)使用入门(原创更新中) (CopyLeft by Meineson | www.mbstudio.cn,原创文章,欢迎转载,但请保留出处说明!) 本文档最新版本及文中提到...
Electron新手入门实战
清空
信息菜单项 14. PC客户端打包(windows、mac、linux) 课程章节代码地址: https://github.com/damiao-classroom/electron-primary 为什么要学习掌握Electron呢? 01. 由于Electron是基于Node.js构建的,...
注册表修改大全(作者:Sunny)
“Internet Exploer”:{3
DC
7A020-0ACD-11CF-A9BB-00AA004AE837} “公文包”:{85BBD920-42A0-1069-A2E4-08002B30309D} “拨号网络”:{992CFFA0-F557-101A-88EC-00DD10CCC48} “计划任务”:{D6277990-4C6A...
WIN10 PDF不显示缩略图 解决
办法
(修复工具下载)
本人操作环境:Windows 10,Adobe Acrobat
DC
事先配置: 1. 已经在“文件夹选项”中取消勾选了“始终显示图标,从不显示缩略图” ...尝试了网上能搜到的各种方法:比如常规的配置,修改注册表,设置用户权限,
清空
缩
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章