收录日期:2019/10/22 15:04:45 时间:2016/07/04 20:03:27 标签:VB基础类
小弟是VB初学者(堪称小白),查了不少资料好不容易学会“用vb调用GDI+任意角度旋转图像”;
但发现旋转后图像边缘的【锯齿效果严重】,不知在vb下,如何解决GDI+旋转图片后的锯齿问题?注意是旋转的是图像不是图形~


查了很多网上信息,没有找到类似情况下用的;仅从一些相关讨论中听到“插值”一说,但在这个条件下具体该如何使用呢,恳请高人给予具体的指点或范例!感激不尽
坦白:本人水平实在有限,只能基本模仿套用一些具体的方法和代码,请有经验的高人耐心明示,谢谢谢谢

'GDI+旋转
Private Declare Function GdipRotateWorldTransform Lib "gdiplus" (ByVal graphics As Long, ByVal angle As Single, ByVal order As MatrixOrder) As GpStatus
'所谓的GDI+反锯齿的函数,可惜是对线、图形反锯齿的,对图像没感觉...
Private Declare Function GdipSetSmoothingMode Lib "gdiplus" (ByVal graphics As Long, ByVal SmoothingMd As SmoothingMode) As GpStatus

如果利用插值的话,是在GDI+旋转图像后,对图像边缘的点进行处理,然后再用GDI+的 GdipDrawImage 输出图像,思路对么?如何具体实现呢,恳求范例代码
自己顶起来,关于vb调用GDI+的内容太少了,恳求高人指点哇
在GDI中消除锯齿的一个做法是,将该点的X和Y值各加减1,再绘一次:
如当前点为(3,4),再在(4,5)和(2,3)位置画一点.效果可能会好些.

这是微软在C#下在做法:
http://msdn.microsoft.com/zh-cn/library/9t6sa8s9.aspx
感谢楼上的指点,可惜小弟确实水平有限,仅靠思路很难靠自己实现,确实需要更具体的范例或者思路讲解...

目前我理解的思路是:  
1、GDI+对图像旋转;
2、GDI+画出图像;
3、算出旋转后图像四个边缘的各个点的坐标;
4、利用GetPixel SetPixel 配合插值算法将各个坐标点重画

不知道这样理解是否正确,另外第3-4步 具体该如何计算怎么实现呢?
你用GDI+了,应该可以用这个函数:AntiAlias
例子:
myGraphics.SmoothingMode = SmoothingMode.AntiAlias
myGraphics.DrawLine(myPen, 0, 0, 12, 8)
你再试下.
恩,SmoothingMode 的 AntiAlias 我之前用过了,帖子也提到了:【只是对线、图形有一定的反锯齿效果,对图像没感觉... 】
其他像 InterpolationMode 、 CompositingQuality 都试过了,对于旋转图像的反锯齿没效果。。 除非我用错了..
参看http://msdn.microsoft.com/zh-cn/library/3b575a03.aspx里边的范例图示也是锯齿明显

目前我正在琢磨通过画图像的3个角的坐标点,计算图像边缘各点坐标,然后GetPixel SetPixel ,我基础水平太差,所以缓慢研究中~

再次感谢“杨哥儿”热心回帖~!


他大娘的,郁闷死了,估计人品不够好,来散分攒人品 趁现在没人 赶快~~~ 请网页高手赐教,多行多列输出的转义问题? 可控制的用FLASH控件实现的图片渐显JS效果在本地不能用? js 单元格的问题 js中方法调用问题 超级郁闷的问题,关于jdbc向MySQL的Blog字段插入数据的问题 jsp中替换html字符的问题,知道的麻烦说下,先谢谢了. IOCP的一点小问题,解决即给分 ASP.NET中Response.Cookie和Request.Cookie有什么区别!! HttpWebRequest的奇怪问题,我想了N天了,实在想不明白! BPL文件中的Form窗口在使用ADOQuery控件报错 在线等 孙鑫程序出现的问题 设计一个英雄类和一个怪物类,还有一个AI类,AI类用于实现在不同情况下对英雄和怪物的伤害计算,把它作为英雄类和怪物类的友元类。 请帮我分析一下,谢谢! 关于Memo控件和ofstream. hibernate连接不上数据库的问题 excel当作数据库 不知道能不能用sql来实现查询或者其它操作 BPL文件中的Form窗口在使用ADOQuery控件报错 获取word窗口文本 一个小问题,突然发现的、。。。。 跪求高手帮忙,局域网问题.小弟先谢谢了! tomcat的启动问题求助? 数据库的图形显示, 给出100分,望解决有关服务器/客户端编程的客户端的问题,急! 跪求高手帮忙,局域网问题.小弟先谢谢了! 开发播放列表 的问题 关于复制的问题 如何从数据库中取值 然后赋值给一个数组 哎,早点发现这文章就好了。.写的好真实,真的很佩服你..想问你一个问题.你做桑拿是自己去的还是朋友介绍去的还是男朋友带着去的.我前几天本来也去了的.但见了那培训场面还是觉得接受不了.就来做酒店了.我现在在东莞.是湖南的。我很多朋友都在做那个.