Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.06;
Скачать: CL | DM;

Вниз

Как при копировании битмапа сделать цвет прозрачным?   Найти похожие ветки 

 
Коля   (2002-04-22 01:59) [0]

Какое значение Brush.Color нужно поставить чтобы clFuchsia стал прозрачным? в хелпе пол часа рылся, но так и не нашел...

Brush.Color:= ???;
BrushCopy(rect(0,0,50,95), hр.picture.bitmap, rec(0,0,50,95), clFuchsia);


 
Сергей Чурсин   (2002-04-22 03:44) [1]

А никакое...
Тебе ведь настоящая transparency нужна ?
- из хелпа "Color specifies the color in Bitmap to replace with the Brush of the canvas"
Будь это не битмар, а вектор - Brush.Style:=bsClear
a так - ищи специальные компоненты,
или пробуй сделать что-нибудь через scanline,
или лучше через регионы (SelectClipRgn)

Вот, что-то на диске валялось, не знаю, работает или нет:
How to create transparent bitmaps
{ ... }
if (FTmpComp.Transparent) and (FTmpComp.CellMask.Width = 0) then
{need to draw w/out cellmask}
try
{Setup temp bitmaps}
TmpBitmap := TBitmap.Create;
TmpBitmap.Height := FTmpComp.Height;
TmpBitmap.Width := FTmpComp.Width;
MskBitmap := TBitmap.Create;
MskBitmap.Height := FTmpComp.Height;
MskBitmap.Width := FTmpComp.Width;
MskBitmap.Monochrome := True;
ImgBitmap := TBitmap.Create;
ImgBitmap.Height := FTmpComp.Height;
ImgBitmap.Width := FTmpComp.Width;
{Create Mask}
MskBitmap.Canvas.Brush.Color := clWhite;
MskBitmap.Canvas.BrushCopy(DRect, FTmpComp.CellPicture, SRect,
FTmpComp.CellPicture.Canvas.Pixels[0, 0]);
MskBitmap.Canvas.CopyMode := cmSrcInvert;
MskBitmap.Canvas.CopyRect(DRect, FTmpComp.CellPicture.Canvas, SRect);
{Create "blacked out" image}
ImgBitmap.Canvas.CopyMode := cmNotSrcCopy;
ImgBitmap.Canvas.CopyRect(Drect, MskBitmap.Canvas, DRect);
ImgBitmap.Canvas.CopyMode := cmSrcAnd;
ImgBitmap.Canvas.CopyRect(DRect, FTmpComp.CellPicture.Canvas, SRect);
{Copy background from FPicture into the temp bitmap}
TmpBitmap.Canvas.CopyMode := cmSrcCopy;
TmpBitmap.Canvas.CopyRect(DRect, FPicture.Canvas, FRect);
{AND the mask into the background to provide "cut-out"}
TmpBitmap.Canvas.CopyMode := cmSrcAnd;
TmpBitmap.Canvas.CopyRect(DRect, MskBitmap.Canvas, DRect);
{PAINT the CellPicture into the hole}
TmpBitmap.Canvas.CopyMode := cmSrcPaint;
TmpBitmap.Canvas.CopyRect(DRect, ImgBitmap.Canvas, DRect);
{finally copy the temp bitmap onto the main canvas}
Canvas.CopyMode := cmSrcCopy;
Canvas.CopyRect(FRect, TmpBitmap.Canvas, DRect);
{mark the Cell as having been updated}
FTmpComp.IsDirty := False;
finally
{free the bitmaps}
TmpBitmap.Free;
MskBitmap.Free;
ImgBitmap.Free;
end;


 
Коля   (2002-04-22 05:08) [2]

Спасибо за помощь!
Попробовал Brush.Style:=bsClear - получилась прозрачность! правда пришлось битмап в Image засунуть..



Страницы: 1 вся ветка

Текущий архив: 2002.05.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
1-17630
Executor
2002-04-23 09:52
2002.05.06
Как округлить.


3-17472
yozhik
2002-04-09 14:34
2002.05.06
Копирование данных между двумя базами.


14-17703
Roach
2002-03-18 12:26
2002.05.06
Games


3-17485
dim-
2002-04-11 17:55
2002.05.06
Выборка по датам


1-17514
Lord BDV
2002-04-21 13:48
2002.05.06
TAnimate - нужна срочная помошь