0

我正在与德尔福合作。我有一个点数组,如图所示。

替代文字

然后我将此数组提供给 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);
4

2 回答 2

2

它可能只是它的工作方式。FillRect例如,包括左边框和上边框,但不包括矩形的右边框和下边框。 我认为这可能同样适用于FillRgn.

编辑:也在这里确认。

于 2010-06-25T08:59:12.573 回答
0

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


所以,现在我用红色填充该区域,然后用红色填充数组的像素,然后我运行洪水填充算法。它会给出我需要的所有分数。

于 2010-07-07T05:44:51.610 回答