Maks150988
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ShIvADeSt Все, разобрался. После GdipDrawImageRect. GdipCreateHBITMAPFromBitmap(GdiImage, hImage, ARGB(0, 255, 0, 255)); И в результат помещаем hImage, который у нас объявлен как hBitmap в var. Вобщем пока непонятно одно - фоновый цвет картинки. В модулях GDI+ под делфи прототип этой функцией выглядит ARGB. Непонятно как фон нужный задать - почему-то значение Blue "работает", а остальные в нулевом значении остаются. И в итоге результирующий цвет фона вида ргб(0,0,255), хотя мне нужен цвет фуксия - (255,0,255). Модуль GDI+ для работы с изображением. Код: unit F_GdiPlus; interface uses Windows; const WINGDIPDLL = 'gdiplus.dll'; type GDIPlusStartupInput = record GdiPlusVersion : Integer; DebugEventCallback : Integer; SuppressBackgroundThread: Integer; SuppressExternalCodecs : Integer; end; function GdiplusStartup(var token: Integer; var lpInput: GDIPlusStartupInput; lpOutput: Integer): Integer; stdcall; external WINGDIPDLL; function GdiplusShutdown(var token: Integer): Integer; stdcall; external WINGDIPDLL; function GdipCreateFromHDC(hDC: HDC; var Graphics: Cardinal): Integer; stdcall; external WINGDIPDLL; function GdipLoadImageFromFile(FileName: PWideChar; var Image: Cardinal): Integer; stdcall; external WINGDIPDLL; function GdipGetImageWidth(Image: Cardinal; var Width: UINT): Integer; stdcall; external WINGDIPDLL; function GdipGetImageHeight(Image: Cardinal; var Height: UINT): Integer; stdcall; external WINGDIPDLL; function GdipDrawImageRect(Graphics: Cardinal; Image: Cardinal; X, Y, Width, Height: Single): Integer; stdcall; external WINGDIPDLL; function GdipDisposeImage(Image: Cardinal): Integer; stdcall; external WINGDIPDLL; function GdipDeleteGraphics(Graphics: Cardinal): Integer; stdcall; external WINGDIPDLL; function GdipCreateHBITMAPFromBitmap(Graphics: Cardinal; var Bitmap: hBitmap; Background: TColorRef): Integer; stdcall; external WINGDIPDLL; function ARGB(A, R, G, B: Byte): TColorRef; var hGDILib : Cardinal; StartUpInfo: GDIPlusStartupInput; GdipToken : Integer; implementation function ARGB(A, R, G, B: Byte): TColorRef; begin Result := (DWORD(b) or (DWORD(g) shl 8) or (DWORD(r) shl 16) or (DWORD(a) shl 24)); end; end. | И кстати, сдается мне что функцией CreateDIBSection создается всегда 32-битный битмап, а не то значение, которое нужно. Пробовал подставлять 16 и 256 и 16 и 24 в параметр битности заголовка - изображение вроде как 32-битное получается свиду. |