Вверх ↑
Разработчик
Ответов: 26103
Рейтинг: 2124
#1: 2022-01-25 00:35:34 ЛС | профиль | цитата
andrestudio писал(а):
GDI + antialiasing всегда будут проблемы с background в GDI+ в априори такого быть не может

Вот эту совокупность фраз я честно не понял. Начал экспериментировать. AntiAliace из AnalogGauge пошел лесом сразу, убил на него часа три (ну никак он не хотел сглаживать увеличенные картинки, выдавал их как есть, но в исходном разрешении). Пока не понял, что отрисовка работает сразу на увеличенном контексте, а если увеличить картинку обычными средствами, то получишь на всю группу используемых точек (для метода сглаживания) один цвет. Те, увеличил картинку в 4-ре раза для максимального сглаживания, получил 16 одинаковых точек на каждый исходный пиксель рисунка.
Попробовал GDI+, работает, меняет сглаживание и режимы интерполяции, но, блин, не впечатляет как-то, слабовато, что ли



Стоят режимы -- SmoothingModeAntiAlias и InterpolationModeHighQualityBicubic

А вот код GDI
  // создадим образец в памяти на базе нашего изображения
GdipCreateBitmapFromHBITMAP(FFaceBitmap.Handle, 0, gpBmp);

// свяжем контекст FAABitmap.Canvas.Handle: HDC с GDI+
GdipCreateFromHDC(FAABitmap.Canvas.Handle, Context);

// установим антиалиасинг для изображений
GdipSetSmoothingMode(Context, SmoothingModeAntiAlias);

// установим сжатие по бикубическому алгоритму
GdipSetInterpolationMode(Context, InterpolationModeHighQualityBicubic);

// выведем изображение исходя из нашей области
GdipDrawImageRectRect(Context, gpBmp, 0, 0, FAABitmap.Width, FAABitmap.Height, 0, 0, FFaceBitmap.Width, FFaceBitmap.Height, UnitPixel, NIL, NIL, NIL);
Че тут можно еще улучшить? Попробую еще сжать обратно с использованием сглаживания.
карма: 22

0
Редактировалось 3 раз(а), последний 2022-01-25 00:43:33