Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
Коля   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
1-17542
masik
2002-04-22 17:21
2002.05.06
Удаление интерфейсных объектов


1-17583
PaRL
2002-04-22 15:43
2002.05.06
Координаты


14-17683
Вадим
2002-03-28 21:09
2002.05.06
Ненавижу!


1-17647
SONY
2002-04-23 14:53
2002.05.06
как из кол. секунд (integer) получить время (TTime)


6-17649
VID
2002-02-17 02:10
2002.05.06
Самый трудный вопрос :))





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский