Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2008, 07:59   #1
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию Canvas.Polygon

Вот кусок кода. Рисует полигон на канве с заливкой по картинке (1.bmp):

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  AP: array of TPoint;
  BM: TBitmap;
begin
  SetLength (AP, 5);
  AP [0].X := 30 ;    AP [0].Y := 30 ;
  AP [1].X := 130;    AP [1].Y := 30 ;
  AP [2].X := 150;    AP [2].Y := 70 ;
  AP [3].X := 80 ;    AP [3].Y := 130;
  AP [4].X := 50 ;    AP [4].Y := 130;

  BM := TBitmap.Create;
  BM.Transparent := True;
  BM.TransparentMode := tmFixed;
  BM.TransparentColor := clWhite;
  BM.LoadFromFile ('D:\TEMP\1.bmp');

  Image1.Canvas.Pen.Color := clRed;
  Image1.Canvas.Pen.Width := 1;
  Image1.Canvas.Brush.Color := clRed;
  Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height);

  Image1.Canvas.Pen.Color := clBlack;
  Image1.Canvas.Pen.Width := 2;
  Image1.Canvas.Brush.Bitmap := BM;
  Image1.Canvas.Polygon (AP);

  BM.Free;
end;
Подскажите, что нужно изменить, чтобы при заливке белый цвет был прозрачный.
Sibedir вне форума Ответить с цитированием
Старый 17.01.2008, 08:43   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

как вариант ищешь как сделать регион по картинке (должно быть где-нить про окна нестандартной формы). Потом создаешь регион по точкам HRGN rgn2 := CreatePolygonRgn и CombineRgn(rgn1,rgn1,rgn2,RGN_AND) и потом рисуем Canvas.PaintRgn(rgn1);
ну и не забываем удалять регионы через DeleteObject
pu4koff вне форума Ответить с цитированием
Старый 18.01.2008, 14:36   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Все оказалось проще:
Код:
  Image1.Canvas.Pen.Color := clRed;
  Image1.Canvas.Brush.Color := clRed;
  Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height);

  Image1.Canvas.Pen.Mode  := pmMask; // ВОТ ЭТО -----------------------
  Image1.Canvas.Brush.Bitmap := BM;
  Image1.Canvas.Polygon (AP);

Последний раз редактировалось Sibedir; 18.01.2008 в 14:57.
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос с canvas Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 09.03.2009 23:09
Как очистить Canvas? beegl Общие вопросы Delphi 4 30.05.2008 02:51
Подключение Canvas Zeraim Общие вопросы Delphi 4 13.05.2008 20:51
Canvas Zven Общие вопросы Delphi 9 06.12.2007 10:40
Canvas (Канва) - заливка фигуры произвольной формы Albenous Общие вопросы Delphi 13 24.02.2007 13:21