社区
界面
帖子详情
GDI+ 能不能根据设置的region绘制边框
jlgjzx333
2011-09-13 09:58:11
本人用GDI+绘制填充某一个区域,部分程序如下:
Region myRegion(rgn);
graphics.FillRegion(&newBrush,&myRegion);
我想问的是能不能根据根据这个区域myRegion,用GDI+来绘制此区域的边框。
...全文
515
17
打赏
收藏
GDI+ 能不能根据设置的region绘制边框
本人用GDI+绘制填充某一个区域,部分程序如下: Region myRegion(rgn); graphics.FillRegion(&newBrush,&myRegion); 我想问的是能不能根据根据这个区域myRegion,用GDI+来绘制此区域的边框。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 记不太清了
GDI+
不规则窗体
标题 "
GDI+
不规则窗体" 涉及到的是Windows编程中创建自定义形状窗口的技术,主要利用了
GDI+
(Graphics Device Interface Plus)库。
GDI+
是Microsoft提供的一种图形
绘制
API,用于在Windows应用程序中进行图形、文本和...
GDI+
函数介绍-全.zip
GDI+
(Graphics Device Interface Plus)是Windows操作系统中用于图形
绘制
和图像处理的一个强大的API,它是GDI(Graphics Device Interface)的升级版本。
GDI+
提供了丰富的绘图功能,包括二维几何形状、图像操作、...
MFC
GDI+
图片浏览器(半成品)
- 笔刷和画刷:Pen类用于线条和
边框
的
绘制
,Brush类用于填充形状。 - 图形路径:GraphicsPath类可以定义复杂的几何形状,包括直线、曲线等。 3. **MFC中的绘图**: 在MFC应用中,通常在OnDraw()函数中进行绘图...
用Visual C++.NET进行
GDI+
编程
Image类用于加载和操作图像,Pen类则用于
绘制
线条和
边框
,
Region
类用于定义图形的复杂形状和剪裁区域。
GDI+
的新特性极大地丰富了开发者的创作空间: 1. **渐变画刷**:
GDI+
引入了线性渐变和路径渐变画刷,允许...
GDI+
用png实现不规则窗体自绘按钮
一旦路径完成,将窗体的`
Region
`属性
设置
为这个路径,这样系统就会根据这个路径裁剪窗体,使其显示为不规则形状。 接下来,我们来讨论自绘按钮。在不规则窗体上,
不能
简单地放置标准的Windows控件,因为它们都是...
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章