Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.147.193] |
|
Сообщ.
#1
,
|
|
|
Var Matrix:TColorMatrix = ((1.0, 0.0, 0.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.4, 0.0), (0.0, 0.0, 0.0, 0.0, 1.0)); Procedure AlphaDraw(AFrom,AAlpha,ATo:TBitmap;AWidth,AHeight,APercent:Integer); Var Graphics:GPGraphics; Bitmap:GPBitmap; Attributes:GPImageAttributes; Begin Matrix[3,3]:=APercent/100; GdipCreateFromHDC(ATo.Canvas.Handle,Graphics); GdipCreateBitmapFromHBITMAP(AFrom.Handle,AFrom.Palette,Bitmap); GdipDrawImageRectI(Graphics,Bitmap,0,0,AWidth,AHeight); GdipDisposeImage(Bitmap); GdipCreateBitmapFromHBITMAP(AAlpha.Handle,AAlpha.Palette,Bitmap); GdipCreateImageAttributes(Attributes); GdipSetImageAttributesColorMatrix(Attributes,ColorAdjustTypeBitmap,True,@Matrix,Nil,ColorMatrixFlagsDefault); GdipDrawImageRectRect(Graphics,Bitmap,0,0,AWidth,AHeight,0,0,AWidth,AHeight,UnitPixel,Attributes,Nil,Nil); GdipDisposeImageAttributes(Attributes); GdipDisposeImage(Bitmap); GdipDeleteGraphics(Graphics); End; Пример: Image3.Canvas.FillRect(Image3.ClientRect); // Image3 не должен быть пустым AlphaDraw(Image1.Picture.Bitmap,Image2.Picture.Bitmap,Image3.Picture.Bitmap,128,128,50); Результат: в Image3 будет скопирован Image1, а поверх него с 50% прозрачностью Image2 |