首页 新闻 会员 周边

GDI+复杂复合形状填充如何抗锯齿?

0
悬赏园豆:120 [已关闭问题] 关闭于 2011-12-30 09:34

我使用Region将多个路径复合(有并集复合、交集复合、异或复合),然后使用TextureBrush填充图片到Graphics对象中,保存后的图片发现边缘锯齿严重,即使进行了如下设置已然没有任何改变:

 

g.SmoothingMode = SmoothingMode.HighQuality;           

g.CompositingQuality = CompositingQuality.HighQuality;

 

看到这篇文章的回答中说Region是不支持抗锯齿的,真的吗?:

http://www.uipower.com/bbs/archiver/tid-131520.html

 

那么如果Region不支持抗锯齿,怎么才能实现复合形状的抗锯齿填充呢?

仅仅使用GraphicsPath及其他基本图形的话,只能填充不能删除啊,等于是只能做出并集图像,因为即便填充透明色也仅仅等于是在原图上覆盖一层完全透明的像素吧,跟没画一样,没法实现从图中减去一小块区域吧?

 

请高手赐教。

问题补充: 我尝试以剪裁画布后再绘图的方式实现,但不管是直接剪裁先前的Region区域,还是剪裁GraphicsPath(测试时里面只画了个圆形),最终结果都是带锯齿的,我看到Graphics的Clip属性其实也就是一个Region而已,所以估计也是没法实现抗锯齿的。 这种绘图剪裁需求应该很常见吧?比如要做传统拼图图形的话,就要把一张图剪裁成N个不规则的小块,每个小块有凹有凸,凹的地方不就要求剪掉么,这么简单而常用的需求仅仅是额外需要抗锯齿效果就那么难实现吗?这也太囧了吧。
斯克迪亚的主页 斯克迪亚 | 老鸟四级 | 园豆:4124
提问于:2011-02-17 21:19
< >
分享
所有回答(4)
0

无解,最后用WPF实现的,坑爹啊。

斯克迪亚 | 园豆:4124 (老鸟四级) | 2011-12-30 09:34
0

时隔两年  不知道问题 有没有得到解决  我也遇到同样的问题

星辰手 | 园豆:202 (菜鸟二级) | 2013-09-14 10:35
0

时隔 4 年多 发现解决方法 

http://blog.csdn.net/chinacsharper/article/details/50854852

注意 首先要绘制到的  中间 一个 Bitmap 上 ,再使用 DrawImage 方法 

479799416 | 园豆:204 (菜鸟二级) | 2016-06-23 16:34
0

时隔一个多月,看到这个问题,无敌

橘子纯净水 | 园豆:202 (菜鸟二级) | 2016-07-26 08:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册