VC中半透明填充多边形。

daredjever 2010-01-05 09:53:54
大家好:
   怎么不用GDI+在VC中实现一个多边形区域的半透明填充?网上的资料我慢慢去看,有什么结果我也在这里说一下,请有做过或者好办法的朋友告诉一下方法。
还有我需要做一个效果:就是在一个多边形区域中,填充一些小符号(比如小圆点),除了有小圆点的地方,其他的地方需要是透明的、也就是说要在一个多边形区域内画一些等间距的圆点。
我曾经采用过位图填充,就是把圆点画在一张小位图上,用这张位图选入刷子之后用polygon填充。但是小位图的背景色不能实现透明。请问谁有什么好的办法没?
不知道我表示清楚没有。有什么疑问可以问我。
...全文
792 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
daredjever 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cnzdgs 的回复:]
用CreatePolygonRgn、SelectClipRgn对DC进行裁剪,然后画点或者用TransparentBlt贴图都可以。
[/Quote]

你的意思就是把我要半透明填充的区域先做成一个Rgn,然后把他设置成ClipRgn,就可以对整个DC进行半透明填充,就可以使用矩形范围的填充函数了。
我去试试,谢谢了。
不过我需要半透明填充,所以TransparentBlt函数不用,他是透明某种颜色。用alph。。。。这个函数,可以设置透明度。
cnzdgs 2010-01-07
  • 打赏
  • 举报
回复
对。
半透明用AlphaBlend,我当成“透明”了。
photowen 2010-01-06
  • 打赏
  • 举报
回复
关注!
cnzdgs 2010-01-06
  • 打赏
  • 举报
回复
用CreatePolygonRgn、SelectClipRgn对DC进行裁剪,然后画点或者用TransparentBlt贴图都可以。
daredjever 2010-01-06
  • 打赏
  • 举报
回复
再顶一下,有谁做过这个工作啊?我觉得画图中一定会用到这个方法的。对于多边形区域的透明填充肯定会遇到的啊。
vclongking 2010-01-05
  • 打赏
  • 举报
回复
设置DC属性应该可以吧
yxwsbobo 2010-01-05
  • 打赏
  • 举报
回复
LOGBRUSH lgb;
lgb.lbStyle = BS_HOLLOW;
hBrush = CreateBrushIndirect(&lgb);
SelectObject(hDC,hBrush);


这样绘制出的图形就是中空的
vssvss 2010-01-05
  • 打赏
  • 举报
回复
学习中
vann1982 2010-01-05
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20010812/19/235071.html
yxwsbobo 2010-01-05
  • 打赏
  • 举报
回复
设置 hDC属性 就可以让背景是透明的了
caocheng8230 2010-01-05
  • 打赏
  • 举报
回复
我也很想知道!
daredjever 2010-01-05
  • 打赏
  • 举报
回复
回复yxwsbobo:设置DC只是你绘制文本信息等的时候背景透明,和我说的情况不太一样。

回复vann1982:我要版透明填充的是一个多边形区域,不是矩形,不能用你给的那个函数。
VC++.NET精彩百例》配套代码

[涉及平台] VC++.NET
[作者] void
[文件大小] 2969KB
[更新日期] 2005-10-30

一、资源说明

第1章 界面编程
实例1 "欢迎"界面
实例2 动态字幕效果
实例3 透明窗体
实例4 静态切分窗口
实例5 滚动视图
实例6 字形窗口
实例7 多边形窗口
实例8 HTML浏览器
实例9 窗口的动画效果
实例10 实现动画图标
实例11 动态切分窗口
实例12 橡皮区矩形
实例13 多个定时器
实例14 椭圆窗体


第2章 图像和多媒体编程

实例 15 BMP文件浏览器
实例 16 图像的镜像处理
实例 17 图像的分割处理
实例 18 使用画笔
实例 19 使用画刷
实例 20 显示空心字
实例 21 显示渐进字体
实例 22 显示艺术字体
实例 23 马赛克效果
实例 24 MiDi播放器
实例 25 CD播放器
实例 26 纹理场景效果
实例 27 Bezier线框曲面
实例 28 输出旋转文本

第3章 对话框与控件编程
实例 29 树形控件
实例 30 列表控件
实例 31 时间控件
实例 32 彩色按钮
实例 33 组合框控件
实例 34 单选按钮和复选框
实例 35 工具栏编程
实例 36 状态栏编程
实例 37 对话框显示图片
实例 38 模式对话框
实例 39 非模式对话框
实例 40 位图按钮
实例 41 对话栏编程

第4章 文件与系统编程
实例 42 鼠标绘图
实例 43 键盘输入
实例 44 获取文件属性
实例 45 访问修改注册表
实例 46 设定计算机名称
实例 47 列举驱动器
实例 48 关闭操作系统
实例 49 查找文件
实例 50 获取磁盘空间
实例 51 读写文件
实例 52 系统进程检测
实例 53 获取系统信息
实例 54 获取文件夹路径
实例 55 设定系统时间

第5章 线程操作与COM组件编程
实例 56 创建线程
实例 57 线程间的通信
实例 58 使用自定义消息
实例 59 线程间的优先级
实例 60 线程间的同步
实例 61 重用C++对象
实例 62 创建永久对象
实例 63 MFC建立COM
实例 64 测试COM组件


第6章 网络和数据库编程
实例 65 聊天室服务器
实例 66 HTTP应用程序
实例 67 FTP应用程序
实例 68 HTTP服务器
实例 69 发送电子邮件
实例 70 接收电子邮件
实例 71 ATL Server Web
实例 72 DOA获取信息
实例 73 DAO数据库编程
实例 74 ADO访问数据库

第7章 OPENGL编程
实例 75 绘制对比矩形
实例 76 绘制直线
实例 77 绘制圆和椭圆
实例 78 绘制三角形
实例 79 缩放变换
实例 80 旋转变换
实例 81 平移变换
实例 82 绘制点
实例 83 OpenGL编程
实例 84 实现简单动画
实例 85 视口投影变换
实例 86 键盘控制图形

第8章 OLE和GDI+编程
实例 87 OLE容器
实例 88 保存OLE信息
实例 89 设置跟踪矩形
实例 90 显示多个OLE项
实例 91 ActiveX服务器
实例 92 插值模式
实例 93 图像区域平铺
实例 94 文字填充
实例 95 图形容器
实例 96 线帽组合
实例 97 半透明线条
实例 98 颜色再变换表
实例 99 旋转和扭曲图像
实例 100 显示垂直文本

二、使用说明
本书所附光盘的内容包含了开发实例的所有程序源码,所有程序源码都是在Visual C++.NET上编译通过的。要运行本光盘上的实例,用户需要先安装Visual C++.NET编译环境,请将光盘上的实例拷贝到本机硬盘上,并去掉其只读属性。程序拷贝到本机硬盘后,经编译即可直接运行。(注意:各文件的文件名请与原书的名称保持一致)

  关于读者近期反映的《Visual C++.net精彩编程百例》附带源码光盘问题,经核查,我们发现光盘的确存在着源代码命名与原书不匹配的现象。发生这种现象的原因主要是由于工作人员失误,光盘在刻制过程采用了较旧的8×3文件名格式,导致某些文件/文件夹的名称信息丢失,使读者不能够直接使用。我们已经以最快的速度对此问题进行了初步更正。对于此次发布的新版源代码,您可以根据原书章节直接找到对应的源代码目录,然后根据原书的文件名,将源代码相应的文件名予以纠正即可正常使用。

  给读者的阅读使用造成了诸多不便,在此表示深深的歉意!希望能得到您的体谅并一如既往支持我们的工作,谢谢!

19,468

社区成员

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

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