IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Как сделать рисунки в Paintbox прозрачными ?
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской
Реальное имя: Константин

Репутация: -  1  +


Помогите пожалуйста: никак не пойму, как сделать так, чтобы рисунки в PaintBox были прозрачными..????
подскажите, если это вообще возможно, конечно... или елси нет, то как выйти из этой ситуации??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


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;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской
Реальное имя: Константин

Репутация: -  1  +


а как сделать возможность выделения части изображения на допустим например какого-то Image1????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.04.2024 11:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name