Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как нарисовать на форме полупрозрачный полигон? [D7, XP]


kostyl_kostyl ©   (2009-04-21 15:29:00) 

Добрый день. Скажите пожалуйста как нарисовать на форме полупрозрачный полигон, если на форме уже нарисован определенный рисунок. Необходимо, чтобы этот рисунок как бы просвечивался под нарисованным сверху полигоном. Заранее благодарю.


kostyl_kostyl   (2009-04-21 18:00:00) [1]


> Григорьев Антон ©


> StriderMan  

спасибо все получилось...


StriderMan   (2009-04-21 17:37:00) [2]


> TCanvas.Polygon(const Points: array of TPoint);


тогда

setrop2(Canvas.Handle, R2_MERGEPEN);
Canvas.Brush.Bitmap := TR_BMP;
Canvas.Polygon(...);


но сдается мне > Григорьев Антон ©   (21.04.09 17:30) [5]естественнее и правильнее, хотя и несколько сложнее


kostyl_kostyl   (2009-04-21 17:36:00) [3]


> Григорьев Антон ©   (21.04.09 17:30) [5]

да наверно так и буду пробовать, ибо я делал тоже самое только самопалом - рисовал не все точки занимающие площадь верхнего полигона - долго...


kostyl_kostyl   (2009-04-21 17:32:00) [4]


> а полигон это что? какой класс?

TCanvas.Polygon(const Points: array of TPoint);


Григорьев Антон   (2009-04-21 17:30:00) [5]

Делаете Bitmap такого размера, который гарантировано содержит ваш многоугольник и заполняете этот рисунок целиком нужным вам цветом. Потом с помощью CreatePlygonRgn и SelectClipRgn устанавливаете регион отсечения в виде вашего многоугольника. Выводите рисунок на форму с помощью функции AlphaBlend с нужной степенью прозрачности - цвет изменят только те пиксели, которые попадут в регион отсечения.


StriderMan   (2009-04-21 17:22:00) [6]

а полигон это что? какой класс?


kostyl_kostyl   (2009-04-21 17:18:00) [7]


> заполнить полигон

как это сделать?


StriderMan   (2009-04-21 16:48:00) [8]

можно попробовать заполнить полигон такой маской:

  TR_BMP := TBitMap.Create;
 with TR_BMP do
 begin
   Width := 2;
   Height := 2;
   Canvas.Pixels[0, 1] := clNone;
   Canvas.Pixels[0, 0] := clLtGray;
   Canvas.Pixels[1, 0] := clNone;
   Canvas.Pixels[1, 1] := clLtGray;
 end;


clickmaker   (2009-04-21 16:13:00) [9]

см. в сторону GDI+


Наверх

Титульная страница Поиск, карта сайта Написать письмо