Путаница с CreatePolygonRgn - PullRequest
       27

Путаница с CreatePolygonRgn

0 голосов
/ 25 июня 2010

Я работаю с Delphi. У меня есть массив точек, которые продолжаются, как показано на рисунке.

альтернативный текст http://i50.tinypic.com/4zylxl.jpg

Затем я передаю этот массив CreatePolygonRgn и создаю область, скажем, rgn1.

rgn1 := CreatePolygonRgn(tmpary1[0],Count,WINDING);

Затем я заполняю регион и показываю его на своем элементе управления TImage, как показано на рисунке. Проблема с левой стороны, точки также покрыты в области, но с правой стороны точки массива не покрыты. Это можно увидеть на изображении, которое слева показывает зеленую границу, но справа видно. Я где-то ошибаюсь ??? Если мой вопрос вам не ясен, пожалуйста, спросите.
Благодарю вас.

Редактировать:

  for cnt := 0 to Count - 1 do begin
     p1 := imgmain.Picture.Bitmap.ScanLine[tmpary[cnt].Y];
     p1[tmpary[cnt].X].rgbtBlue := 0;
     p1[tmpary[cnt].X].rgbtGreen := 255;
     p1[tmpary[cnt].X].rgbtRed := 0;
  end;
  rgn1 := CreatePolygonRgn(tmpary1[0],tmpseq1.Count,WINDING);
  imgmain.Picture.Bitmap.Canvas.Brush.Color := clRed;
  FillRgn(imgmain.Picture.Bitmap.Canvas.Handle,rgn1,imgmain.Picture.Bitmap.Canvas.Brush.Handle);

Ответы [ 2 ]

2 голосов
/ 25 июня 2010

Это может быть просто так, как это работает. FillRect, например, включает в себя левую и верхнюю границы, но исключает правую и нижнюю границы прямоугольника. Я думаю, что то же самое, вероятно, относится к FillRgn.

Редактировать: Подтверждено здесь тоже.

0 голосов
/ 07 июля 2010

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


Итак, теперь я заливаю область красным цветом, затем заливаю пиксели массива красным цветом, а затем запускаю алгоритм заливки.Это даст все необходимые мне очки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...