代码之家  ›  专栏  ›  技术社区  ›  Himadri

与CreatePolygonRgn混淆

  •  0
  • Himadri  · 技术社区  · 16 年前

    我和德尔福一起工作。我有一个点的数组,如图所示。

    alt text

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

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


    谢谢您。

    编辑:

      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 回复  |  直到 7 年前
        1
  •  2
  •   Ondrej Kelle    16 年前

    可能就是这样。 FillRect ,例如, includes the left and top borders, but excludes the right and bottom borders of the rectangle. 我想这可能也适用于 FillRgn

    编辑:已确认 here ,也是。

        2
  •  0
  •   Community Mohan Dere    9 年前

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


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