收录日期:2019/07/17 13:15:28 时间: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 ,我基础水平太差,所以缓慢研究中~

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


谁知道哪有这样的ASP源码下载吗? 关于滚动条 ehlib中的dbgrideh能否只定义其中一列的mousemove事件 很简单的问题 初学者的问题!~有关SQL语句!~ 请教下面两句话的意思,谢谢了先。 myeclipse配weblogic问题 struts中如何导入css样式表文件? 高手们,接分了,一个简单问题:关于SQL语句的问题!!! 什么时候用assert。 强烈谴责.net版的版主--独裁专制 ,关于“任命zeusvenus为C#斑竹”的深度思考 关于传递下拉菜单的值的问题(Mysql) 求c# 菜单控件 在一个winform页面中怎样能实现页面的传值? Visual Web Developer 2005 速成版的测试版 2中存储过程调用问题 本人想建个个人网页 自定义服务器控件的事件问题 请问在那可下载免费的weblogic 如果1个表有100个字段,如何用简单方法select得到其中的99个 假如一个字符串中有多个相同的字符,怎样用indexOf()取得指定位置上的字符的位置? jsp调用dll,jsp显示错误 webservice调用错误!! 问一个CFile对象关闭的问题 重新启动系统栏图表丢失!! 中文传值乱码问题 这两个函数是不是错了,如何调用? 在asp.net下用按钮将Excel文件导入SQL2K文件太大怎么半啊? 初学者问题? 我有一个疑问,百思不得其解! mysql 5.0.16版本配置启动报错误。很奇怪