Главная страница
    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
3-17489
khvalera
2002-04-11 23:56
2002.05.06
Базах данных


1-17515
openfire
2002-04-19 12:38
2002.05.06
Вопрос по ListBox


3-17473
AlexP
2002-04-10 21:08
2002.05.06
Мастера, подскажите.


3-17504
gads
2002-04-12 19:41
2002.05.06
не могу посмотреть все записи в таблице


4-17748
MZ
2002-03-03 21:56
2002.05.06
TWordApplication





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