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);