社区
界面
帖子详情
GDI+ 能不能根据设置的region绘制边框
jlgjzx333
2011-09-13 09:58:11
本人用GDI+绘制填充某一个区域,部分程序如下:
Region myRegion(rgn);
graphics.FillRegion(&newBrush,&myRegion);
我想问的是能不能根据根据这个区域myRegion,用GDI+来绘制此区域的边框。
...全文
521
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+
不规则窗体
http://blog.csdn.net/greless/article/details/74011387
GDI+
函数介绍-全.zip
GDI+
函数介绍-全.zip
MFC
GDI+
图片浏览器(半成品)
基于MFC
GDI+
的图片浏览器,是个半成品,只能完成画图
用Visual C++.NET进行
GDI+
编程
GDI+
接口是Microsoft Whistler操作系统中的一部分,它是GDI的一个新版本,不仅在GDI基础上添加许多新特性而且对原有的GDI功能进行优化。在为开发人员提供的二维矢量图形、文本、图像处理、区域、路径以及图形数据矩阵等方面构造了一系列相关的类,如Bitmap(位图类)、Brush(画刷类)、Color(颜色类)、Font(字体类)、Graphics(图形类)、Image(图像类)、Pen(画笔类)和
Region
(区域类)等。其中,图形类Graphics是
GDI+
接口中的一个核心类,许多绘图操作都可用它来完成。 我们首先介绍一下
GDI+
的新特性以及其编程方式的改变,然后介绍用Visual C++.net在基于对话框和单文档/多文档等应用程序中使用
GDI+
的一般方法。
GDI+
新特性
GDI+
与GDI相比,增加了下列新的特性: 1、渐变画刷
GDI+
用png实现不规则窗体自绘按钮
GDI+
用png实现不规则窗体自绘按钮 可拖动
界面
15,978
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章