与CreatePolygonRgn混淆

时间:2010-06-25 05:41:40

标签: delphi region

我正在使用delphi。我有一系列的点继续如图所示。

alt text 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 个答案:

答案 0 :(得分:2)

它可能就是它的工作方式。例如FillRectincludes the left and top borders, but excludes the right and bottom borders of the rectangle. 我认为这同样适用于FillRgn

编辑:确认here

答案 1 :(得分:0)

最后我发现了问题的可行解决方案以及this问题的解决方案,因为这两个问题都是相互关联的。
我正在填补该地区,然后试图获得该地区的边界。我得到一些原始数组的点作为边界,一些点是实际的边界点。我想要所有的实际边界点。


所以,现在我用红色填充区域,然后用红色填充数组的像素,然后运行floodfill算法。它将提供我需要的所有要点。