社区
界面
帖子详情
GDI+ 能不能根据设置的region绘制边框
jlgjzx333
2011-09-13 09:58:11
本人用GDI+绘制填充某一个区域,部分程序如下:
Region myRegion(rgn);
graphics.FillRegion(&newBrush,&myRegion);
我想问的是能不能根据根据这个区域myRegion,用GDI+来绘制此区域的边框。
...全文
577
17
打赏
收藏
GDI+ 能不能根据设置的region绘制边框
本人用GDI+绘制填充某一个区域,部分程序如下: Region myRegion(rgn); graphics.FillRegion(&newBrush,&myRegion); 我想问的是能不能根据根据这个区域myRegion,用GDI+来绘制此区域的边框。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jlgjzx333
2011-09-20
打赏
举报
回复
To j8daxue:
对的,我采用gdi+绘制了按钮边框,知道顶点后也可以采用FillPolygon来绘制边框。
你说的那种右边和下边绘制不到的情况我也有,不过这只是矩形水平放置时的情况,我绘制的矩形是呈圆形分布的,有各种角度,每个角度遮挡的部分都不太一样,归纳起来说就是设置的RGN有效区其实是采用GDI绘制的方法,有效区的边缘锯齿太多,而GDI+绘制的边框锯齿很少的,但在这个RGN有效区内绘图时,一部分边框就被RGN有效区边缘的锯齿所遮挡,所以我现在想到的办法就是将有效区适当的扩大。
j8daxue
2011-09-19
打赏
举报
回复
能透露下办法吗?
jlgjzx333
2011-09-19
打赏
举报
回复
问题用其他办法解决了,结贴!
j8daxue
2011-09-19
打赏
举报
回复
[Quote=引用 15 楼 jlgjzx333 的回复:]
没什么高级的方法,就是扩大设置的有效区的范围,再将有效区内填充背景色
最后绘制按钮边框
[/Quote]
你的问题不是说GDI绘制锯齿严重而要用GDI+?
知道顶点可以采用graphicspath绘制边框啊。
按照我的经验,矩形RGN的话,一般右边、下边的边框会绘制不到。我也是小了一个像素再画。估计是同样的问题
jlgjzx333
2011-09-19
打赏
举报
回复
没什么高级的方法,就是扩大设置的有效区的范围,再将有效区内填充背景色
最后绘制按钮边框
jlgjzx333
2011-09-16
打赏
举报
回复
GDI可以设置抗锯齿吗?请问如何设置?
jlgjzx333
2011-09-15
打赏
举报
回复
Region myRegion(rgn);
region是有rgn获得的,rgn是由多边形的几个顶点产生的。现在我通过这几个顶点可以用GDI+绘制出边框了。
其实我用GDI+是自绘按钮时绘制按钮的边框,现在按钮的边框是可以绘制出来
但是发现在调用SetWindowRgn(rgn)设置按钮有效区域时产生的有效区域与绘制边框的区域不是完全吻合
导致我用GDI+绘制按钮边框时,按钮的边框不能完全显示出来
现在我为了让GDI+绘制的边框能过全部显示出来,我只能扩大了rgn的范围。
不知我这么说你明不明白,希望你有更好的办法!
不管怎样,都非常感谢你了!
j8daxue
2011-09-15
打赏
举报
回复
你这个region是怎么获得的?
j8daxue
2011-09-15
打赏
举报
回复
既然RGN是由于多边形的定点产生,那你应该知道点坐标?
1.如果知道的话可以通过GraphicsPath的addpolygon方法得到比较精确的多边形边界,如果要求平滑可以使用addcurve,这样绘制边界时可以指定绘制模式。
2.如果不知道,单只是从Region绘制边界麻烦点。
大体流程是得到region的矩形组合(GetRegionScans 具体看MSDN)
矩形两边顺时针逐点加入到GraphicsPath里,类似上面过程。得到点就好办了。
对2,貌似这些矩形组合和单独绘制rgn(不带抗锯齿)的边界有些不一样,我试过实际效果和FrameRgn差不多,可能还不如FrameRgn,如果设置抗锯齿,某些点之间过度不平滑。
jlgjzx333
2011-09-14
打赏
举报
回复
[Quote=引用 3 楼 ywwj5858792qd 的回复:]
估计可以用路径的拓宽,看看Widen函数
[/Quote]
能说具体点吗,Widen函数是什么函数,我用的是GDI+绘图,GDI+里好像没有Widen函数吧
ywwj5858792qd
2011-09-14
打赏
举报
回复
估计可以用路径的拓宽,看看Widen函数
mfc10001003
2011-09-14
打赏
举报
回复
貌似不行吧,region不能转成path
jlgjzx333
2011-09-14
打赏
举报
回复
[Quote=引用 7 楼 j8daxue 的回复:]
不知道边框绘制有什么特殊需求?GDI和GDI+都是用画笔而已。
[/Quote]
用GDI绘制的边框锯齿比较多,用GDI+画的比较平滑
j8daxue
2011-09-14
打赏
举报
回复
不知道边框绘制有什么特殊需求?GDI和GDI+都是用画笔而已。
jlgjzx333
2011-09-14
打赏
举报
回复
[Quote=引用 5 楼 j8daxue 的回复:]
Region::GetHRGN
CDC::FrameRgn
[/Quote]
谢谢你的回答
但我希望绘制边框也能用GDI+来绘制
在GDI中如果有一块区域RGN可以用FrameRgn来绘制这个区域的边界
现在我想问的是在GDI+中同样有一块区域Region,有没有类似GDI中FrameRgn的方法来绘制Region的边界
我在网上所搜了一下,好像GDI+没有类似的方法……
j8daxue
2011-09-14
打赏
举报
回复
Region::GetHRGN
CDC::FrameRgn
写不动代码的人
2011-09-13
打赏
举报
回复
好像可以用addpath 记不太清了
WIndow下的图形GDI和
GDI+
编程总结-不断完善
博客介绍了GDI和设备环境DC。GDI是图形显示函数库,是程序与硬件的桥梁,可控制图形属性。设备环境DC是
绘制
图形方法的集合,能确定绘图和映射模式,在Win32编程中用HDC标识,还提及获取HDC句柄的方法及常用GDI对象。
GDI+
本文深入探讨
GDI+
作为.Net Framework的一部分,提供了详细的绘图表面、坐标系、锯齿处理、文本
绘制
、图像处理等核心功能介绍。涵盖绘图、文本、图像的基本操作与高级技巧。
GDI+
实现半透明阴影
本文介绍如何使用
GDI+
在 Windows 平台上
绘制
真实的半透明阴影效果,包括有
边框
和底部
边框
的半透明阴影及对话框四边的半透明阴影。通过克隆路径、创建阴影区域、定义渐变画刷等步骤实现自然的阴影渐变。
C#不规则窗体设计与源码分析
本文介绍了C#中不规则窗体的设计与实现。通过
GDI+
图形库,结合自定义Form类、重写OnPaint方法等技术,可创建非矩形或自定义
边框
的窗口。还阐述了
设置
透明背景、使用GraphicsPath
绘制
形状、应用
Region
对象
设置
窗体区域等关键技术,帮助新手理解
绘制
过程。
C# 无
边框
异型窗体制作
本文介绍如何使用C#创建无
边框
且具备圆角及自定义控制按钮的窗体,并实现拖动及调整大小的功能。通过
设置
窗体的FormBorderStyle属性和
Region
属性,结合GraphicsPath实现窗体的圆角效果。
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章