我可以通过在单独的图形对象上绘制来使图像旋转,该图形对象在单独的位图上绘制,然后使用图形对象绘制位图,该图形对象在最终图像上绘制。这是绘制了两幅基本相同的图像。我不想这样。该项目是一个简单的图形引擎,因此绘图时间必须尽可能快。最重要的是,System.Graphics还没有证明在绘制图像方面做得太好。
这是我正在使用的代码。它需要一两个改进,但基本方法应该是可见的。
public static System.Drawing.Bitmap rotatedImage(System.Drawing.Bitmap img, double deg, bool hq)
{
int diag = (int)Math.Round(Math.Sqrt(img.Width * img.Width + img.Height * img.Height));
System.Drawing.Bitmap res = new System.Drawing.Bitmap(diag, diag);
System.Drawing.Graphics gfx = System.Drawing.Graphics.FromImage(res);
if (hq) gfx.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
DoublePair rotCent = new DoublePair(diag / 2, diag / 2);
gfx.TranslateTransform((float)rotCent.a, (float)rotCent.b);
gfx.RotateTransform((float)deg);
gfx.TranslateTransform((-1) * (float)rotCent.a, (-1) * (float)rotCent.b);
gfx.DrawImage(img, (diag - img.Width) / 2, (diag - img.Height) / 2, img.Width, img.Height);
return res;
}在新的位图上绘制旋转的图像需要旋转用于绘制的图形对象。我能做的是将主图形对象传递给该方法,旋转它以绘制图像,然后旋转回该对象。但我不知道为大图像旋转图形比为小图像旋转图形更快还是更慢。
那么,哪个更快-旋转整个图形对象两次(旋转以绘制图像,然后旋转回来),还是使用单独的图形绘制旋转后的图像,然后使用主图形对象绘制它?是否有无需使用单独的图形对象和无需旋转图形对象即可旋转图像的选项?
https://stackoverflow.com/questions/38265506
复制相似问题