关于HDC绘图

kiss_xiao0968 2009-08-12 11:30:33
我想问下,我通过HDC在内存中绘制的图形,贴到窗体的DC上后,会有背景色,如何取消内存绘制图形附带的背景颜色?
...全文
1962 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
NoMore 2012-04-07
  • 打赏
  • 举报
回复
我很想知道怎么在DC上画图的??能告诉我吗?楼主closemyeyes@126.com
AlexChan1981 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 skybblue 的回复:]
你可以将要到位置的画到内存DC中,然后再在上面绘图,这样内存DC的背景色就和要贴的位置一样了,就没影想了,要么只能使用透明方法了,网上有很多这样的帖子,自己搜一搜.
[/Quote]

这是比较常用的方法。
Soyokaze 2009-08-12
  • 打赏
  • 举报
回复
可以去除,前提是背景色是单一的颜色。方法是采用颜色键控法,可以调用TransparentBlt(),或者用BitBlt()结合合适的ROP2参数来实现。
skybblue 2009-08-12
  • 打赏
  • 举报
回复
你可以将要到位置的画到内存DC中,然后再在上面绘图,这样内存DC的背景色就和要贴的位置一样了,就没影想了,要么只能使用透明方法了,网上有很多这样的帖子,自己搜一搜.
副组长 2009-08-12
  • 打赏
  • 举报
回复
你可以获得内存DC的存储地址,取来像素看看是不是背景,不是背景在送到设备DC上去。
ys19011 2009-08-12
  • 打赏
  • 举报
回复
方法一:TransparentBlt(),将最后一个参数,设置成你内存DC的背景色(一般是RGB(0,0,0))。使用此方法时,最好SrcDC和DstDC的保持一致,SrcDC绝对不能越界

方法二:
使用BitBlt,(假设你的内存DC为A、当前DC为B、掩码DC(对应A的掩码DC)为C)
1. 确定A中需要透过的背景色;
2. 将A以SRCINVERT的方式拷贝到B;
3. 将C以SRCAND的方式拷贝到B
4. 再将A以SRCINVERT的方式拷贝到B;
ok了
  • 打赏
  • 举报
回复
设置透明

19,472

社区成员

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

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