Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 与CreatePolygonRgn的混淆_Delphi_Region - Fatal编程技术网

Delphi 与CreatePolygonRgn的混淆

Delphi 与CreatePolygonRgn的混淆,delphi,region,Delphi,Region,我在德尔福工作。我有一个点阵列,如图所示 然后我把这个数组交给CreatePolygonRgn并创建区域,比如说rgn1 rgn1:=CreatePolygonRgn(tmpary1[0],计数,绕组) 然后我填充该区域,并将其显示在TImage控件上,如图所示。问题是从左侧开始,区域中的点也被覆盖,但从右侧开始,阵列中的点没有被覆盖。这可以在图像中看到,从左侧看,绿色边框未显示,但从右侧边框可见。我是不是在哪里弄错了???如果您不清楚我的问题,请提问。 多谢各位 编辑: for cnt

我在德尔福工作。我有一个点阵列,如图所示

然后我把这个数组交给CreatePolygonRgn并创建区域,比如说rgn1

rgn1:=CreatePolygonRgn(tmpary1[0],计数,绕组)

然后我填充该区域,并将其显示在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);

这可能就是它的工作方式<例如,code>FillRect
, 我认为这可能同样适用于
FillRgn


编辑:也确认了。

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



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

显示一些代码,在其中绘制绿色轮廓,在其中绘制红色填充。我想你画的红色轮廓比绿色轮廓向左多填充一个像素。@TOndrej哦。。。对..:-(我想要整个区域…我应该怎么做???我使用泛洪填充来获取点,正如你从我的上一个问题中已经知道的…@TOndrej,但它显示createpolygonrgn将排除整个轮廓。而在我的情况下,它排除右轮廓和底部轮廓???例如,你可以通过数组中的矩形,并使m一个像素宽一个像素高一个像素,使用InflateRect API。您的问题不清楚你在做什么。你的点数组从哪里来?@TOndrej如果我用createpolygonrgn画一个矩形,然后填充它,它也会覆盖轮廓。而InflateRect会减少从左到右的宽度&rgt和从上到下的高度,所以不能使用…我的问题仍然没有解决…@TOndrej嗨,这只是通知你在你的帮助下,我找到了解决办法。