Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Определенная область в image прозрачная.


Автор: Grol 2.11.2005, 18:04
Вообщем из темы наверное все понятно. Но могу пояснить. На форме есть Image1 и Image2. Image2 соответственно поверх Image1. В Formcreate закрашиваю их цветом. ДЛя Image2 создал процедуру MouseMove, там отлавливаю координаты мышки и рисую круг относительно этих координат в Image2. Мне нужно сделать так, чтоб тот круг, который я рисую в Image2 был прозрачным на сквозь, так, чтоб было видно Image1, который находится под Image2. Спасибо...

Автор: Петрович 2.11.2005, 19:42
Используй регионы

Автор: Grol 3.11.2005, 03:10
Уважаемый Петрович, а можно поподробней и желательно с примером.smile Я просто начинающий программист и для меня слово РЕГИОНЫ ни о чем не говорит. Спасибо за помощь.

Автор: Slayers 3.11.2005, 07:33
Цитата(Grol @ 3.11.2005, 03:10)
Я просто начинающий программист и для меня слово РЕГИОНЫ ни о чем не говорит

http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&article_num=002526


Автор: Grol 12.11.2005, 19:42
Недавно разобрался с регионами и вот тут проблема одна. Сначало дам код, а потом поясню:
Код

procedure TForm1.FormCreate(Sender: TObject);
var
   EllRG:HRGN;
   RectRG:HRGN;
begin
EllRG:=CreateEllipticRgn(0,0,Width,Height);
RectRG:=CreateRectRgn(0,0,Width,Height);
CombineRgn(RectRG,RectRG,EllRG,RGN_xor);
SetWindowRgn(Handle,RectRG,True);
end;

Вот код создания дырки в форме, но мне то нужно, чтоб дырка была в Image. На форме Image уже имеется. Что я сделал...вместо Handle в процедуре SetwindowRgn подставил Image1.Canvas.Handle-->не получилось сделать дырень. Потом написал так Image1.Picture.Bitmap.Handle-->все равно не получилось. А как тогда это можно сделать?

Автор: darkart 13.11.2005, 00:16
Итак...
Есть два TImage:
imgDown - нижний Timage
imgUp - верхний TImage(свойство Transparent нужно установить в True)
Есть глобальная переменная rgn:HRGN;

В код загрузки формы добавляем:
Код

/////////////////////////////
  rgn:=CreateEllipticRgn(imgDown.Left,imgDown.Top,imgDown.Left+imgDown.Width,imgDown.Top+imgDown.Height);
  PaintRgn(imgUp.Canvas.Handle,rgn);
/////////////////////////////

Автор: Grol 13.11.2005, 00:38
Ща попробую smile. И на этом спасибо...

Автор: darkart 13.11.2005, 01:07
Да, ещё посмотри в http://www.drkb.ru/. Там есть несколько примеров.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)