【发布时间】:2011-12-19 05:41:51
【问题描述】:
我正在使用以下代码将图像旋转一个以中心点为原点的角度。
private Bitmap rotateImage(Bitmap b, float angle)
{
Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
Graphics g = Graphics.FromImage(returnBitmap);
g.TranslateTransform((float)b.Width/2, (float)b.Height / 2);
g.RotateTransform(angle);
g.TranslateTransform(-(float)b.Width/2,-(float)b.Height / 2);
g.DrawImage(b, new Point(0, 0));
return returnBitmap;
}
当我尝试在执行旋转后将图像恢复到其初始角度时出现问题。我打算通过将图像再次旋转 (360-anglerotated) 的角度来做到这一点。但这不起作用并且边缘的图像似乎被削减。 有没有更好的解决方案在c#中旋转图像。我只是想将图像旋转到一个角度而不会向两侧倾斜,然后以反角旋转图像以取消应用的旋转,因此恢复以前的图像。
【问题讨论】:
-
似乎目标图像必须大于源图像并将其绘制在中心。
-
是切边还是切角?
-
@leppie 是的。角落被剪掉了。
-
使目标位图的宽度和高度等于
sqrt(w^2 + h^2)。 -
@leppie 我不明白目标位图是什么意思,这种调整大小会影响原始图像。
标签: c# .net image graphics drawing