Как избежать алиаса при повороте изображения в gdi +? - PullRequest
0 голосов
/ 13 апреля 2009

У меня проблема с вращением изображения на холсте в gdi +, я использую следующий код, однако я вижу, что на краю есть псевдоним.

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

Я использовал следующий код для удаления псевдонима, но не смог.

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

Как удалить псевдоним по краям повернутого изображения.

Большое спасибо!

1 Ответ

0 голосов
/ 13 апреля 2009

Прошло много времени с тех пор, как я работал с GDI +, но я бы предположил, что не существует эффективного способа удаления сглаживания по краям при вращении. Причина в основном в том, что пиксели квадратные. Чтобы повернуть изображение на величину, отличную от 90 градусов, вам нужно использовать некую интерполяцию, чтобы оценить цвета пикселей, в которых раньше не было пикселей.

Так что, если в библиотеке нет ничего, что могло бы специально убрать сглаживание по краям, задумывались ли вы о рисовании жестких линий в цвете фона вдоль границ? Должно быть проще нарисовать эти линии без сглаживания.

...