Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.8.82] |
|
Сообщ.
#1
,
|
|
|
t1, t2 : TBitmap. Нужно получить t3: TBitmap, такой чтобы t1 был на x% прозрачный а t2 такой какой и был. Спасибо. Чем можно для этого в GDI+ воспользоваться?
|
Сообщ.
#2
,
|
|
|
Может просто по-хитрому складывать цвета?
|
Сообщ.
#3
,
|
|
|
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 |
Сообщ.
#4
,
|
|
|
и что, ничего на замену нет?.... нельзя базовыми средствами добицца похожего результата? ну или средствами, которые не требуют установки на конечном компьютере какого либо дополнительного стороннего софта.... пару библиотек можно и с собой таскать,главное чтобы ставить не надо было - типа лив-сд "все свое ношу с собой"
зыж ошипся темой поначалу..... сорри - сам накопал уже Зеркальное отражение изображение Плавный вывод рисунка в TImage |
Сообщ.
#5
,
|
|
|
можно и без ГДИ+, просто ГДИ
только вручную, и большой скорости ждать не приходится (если использовать tbitmap и scanline, и не ударяться в асм). Хотя для ГУИ это "выше крыши" |