请问那位英雄能告诉我如何实现对图像的剪切

解决方案 »

  1.   

    记录这个由鼠标圈出来的不规则区间的全部点坐标到数组。由数组生成RGN,填充这个RGN。
    应该可行。因为 RGN可以生成。填充区域用HBRUSH。HBRUSH可以带位图。都有相应的API。应该可以带位图的BRUSH好象是 CreateHathBrush()???????忘记了现在查一下:
    CreatePolygonRgn()
    HRGN CreatePolygonRgn(    CONST POINT *lppt, // pointer to array of points 点数组
        int cPoints, // number of points in array  点数
        int fnPolyFillMode  // polygon-filling mode  填充模式
       );
    下面是可能用到的API
    CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreatePatternBrush, CreateSolidBrush, DeleteObject, GetBrushOrgEx, SelectObject, SetBrushOrgEx 详细参见WINDOWS SDK HELP
    正确使用的话,理论上是可行的。不知道作图软件是不是这么做的!有时间我自己尝试一下。
      

  2.   

    我做了些尝试,,CreatePolygonRgn()函数的第一个参数有问题。。它要求数组中的 点都不能相同。我云啊。。如果都不同的话,可以成功,但是用鼠标圈的话,就很难保证了。还没成功。。我再继续想办法。。