Помощь - Поиск - Пользователи - Календарь
Полная версия: Как сделать рисунки в Paintbox прозрачными ?
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
priboltik
Помогите пожалуйста: никак не пойму, как сделать так, чтобы рисунки в PaintBox были прозрачными..????
подскажите, если это вообще возможно, конечно... или елси нет, то как выйти из этой ситуации??
volvo
Drkb -> Работа с графикой и мультимедиа -> Графические фильтры и эффекты -> Прозрачность -> Как нарисовать BitMap с прозрачностью.

Ты об этом?
priboltik
Цитата(volvo @ 5.06.2007 1:07) *

Drkb -> Работа с графикой и мультимедиа -> Графические фильтры и эффекты -> Прозрачность -> Как нарисовать BitMap с прозрачностью.

Ты об этом?


ну почти.. good.gif сорри.. у меня старая версия DRKB нельзя ли полностью строки кода, если возможно..
Ozzя
procedure DrawTransparentBmp(Cnv: TCanvas; x,y: Integer; Bmp: TBitmap; clTransparent: TColor);

var

bmpXOR, bmpAND, bmpINVAND, bmpTarget: TBitmap;

oldcol: Longint;

begin

try

bmpAND := TBitmap.Create;

bmpAND.Width := Bmp.Width;

bmpAND.Height := Bmp.Height;

bmpAND.Monochrome := True;

oldcol := SetBkColor(Bmp.Canvas.Handle, ColorToRGB(clTransparent));

BitBlt(bmpAND.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, Bmp.Canvas.Handle, 0, 0, SRCCOPY);

SetBkColor(Bmp.Canvas.Handle, oldcol);



bmpINVAND := TBitmap.Create;

bmpINVAND.Width := Bmp.Width;

bmpINVAND.Height := Bmp.Height;

bmpINVAND.Monochrome := True;

BitBlt(bmpINVAND.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, bmpAND.Canvas.Handle, 0, 0, NOTSRCCOPY);



bmpXOR := TBitmap.Create;

bmpXOR.Width := Bmp.Width;

bmpXOR.Height := Bmp.Height;

BitBlt(bmpXOR.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, Bmp.Canvas.Handle, 0, 0, SRCCOPY);

BitBlt(bmpXOR.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, bmpINVAND.Canvas.Handle, 0, 0, SRCAND);



bmpTarget := TBitmap.Create;

bmpTarget.Width := Bmp.Width;

bmpTarget.Height := Bmp.Height;

BitBlt(bmpTarget.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, Cnv.Handle, x, y, SRCCOPY);

BitBlt(bmpTarget.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, bmpAND.Canvas.Handle, 0, 0, SRCAND);

BitBlt(bmpTarget.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, bmpXOR.Canvas.Handle, 0, 0, SRCINVERT);

BitBlt(Cnv.Handle, x, y, Bmp.Width, Bmp.Height, bmpTarget.Canvas.Handle, 0, 0, SRCCOPY);

finally

bmpXOR.Free;

bmpAND.Free;

bmpINVAND.Free;

bmpTarget.Free;

end;

end;

priboltik
а как сделать возможность выделения части изображения на допустим например какого-то Image1????
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.