Главная страница
    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.45 MB
Время: 0.005 c
14-17701
LionR
2002-03-27 18:16
2002.05.06
pack таблицу dbf


1-17581
neodiX
2002-04-22 15:12
2002.05.06
tdump name.dll


6-17664
fixxxer
2002-02-20 14:10
2002.05.06
посылка E-mail через TNMSMTP


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


1-17598
Сатир
2002-04-22 16:47
2002.05.06
TreeView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский