0

我在 gdi+ 的画布上旋转图像时遇到问题,我正在使用以下代码,但是我发现边缘有别名。

myPathMatrix.Rotate(GetDCAngle(), MatrixOrderAppend);
myPathMatrix.Translate(
GetDCX(), 
GetDCY(),
MatrixOrderAppend);
canvas->SetTransform(&myPathMatrix);
canvas->Draw(XXX);

我使用以下代码删除别名,但失败了。

canvas->SetInterpolationMode(InterpolationMode::InterpolationModeHighQualityBicubic);
canvas->SetSmoothingMode(SmoothingModeAntiAlias);

如何删除旋转图像边缘的别名。

非常感谢!

4

1 回答 1

0

自从我使用 GDI+ 以来已经有一段时间了,但我认为没有有效的选项可以在旋转时消除边缘周围的抗锯齿。原因基本上是像素是正方形的。要将图像旋转 90 度的倍数以外的量,您需要使用某种插值来估计以前没有真正像素的像素颜色。

因此,如果库中没有任何东西可以专门消除边缘周围的抗锯齿,您是否考虑过在背景颜色中沿边界绘制硬线?在没有任何抗锯齿的情况下绘制这些线条应该更容易。

于 2009-04-13T12:06:07.537 回答