CreatePolygonRgn   可以创建一个由一系列点围成的区域   Rgn。  
 反过来,已知这个   Rgn   怎样才能得到这一系列点的坐标呢? 

解决方案 »

  1.   

    var   
          Rgn                       :   HRGN;   
          RgnSize               :   Integer;   
          RgnData               :   pRGNDATA;   
      begin   
          .....   
          RgnSize   :=GetRegionData(   Rgn,   0,   nil   );   
          GetMem(   RgnData,   RgnSize   );   
          GetRegionData(   Rgn,   RgnSize,   RgnData   );   
      end;
      

  2.   

    GetRegionData就相当于反函数,你可以这样理解,但是效果还是不尽人意
    你可以自己试试,大小和数据都有了,得到RegionData
      

  3.   

    也不能这么说GetRegionData是CreatePolygonRgn的反函数
    用CreatePolygonRgn创建一个多边形区域,需要的是顶点,例如5边形只要5个点
    而GetRegionData是将一个Rgn的区域划分为很多个矩形区域,可以得到每个矩形区域的顶点。
    实际上用GetRegionData取CreatePolygonRgn创建的数据,能得到很多个围成这个区域的点,
    而如果是取用CreateRectRgn创建的Rgn,则刚好得到Rect的4个顶点