有DC a和b。要把a中某个圆形范围内的图像拷贝到b中的一个圆形范围内。
假设a中的圆由半径Ra和圆点Xa,Ya确定。b中的圆由Rb和Xb,Yb确定。
谁有好的方法?另外,如果这2个形状更难描述,比如是菱形、多边形、异形等,如何做呢?

解决方案 »

  1.   

    “有DC a和b。要把a中某个圆形范围内的图像拷贝到b中的一个圆形范围内。”
    说明圆形a的面积小于圆形b的面积,可以省略一些判断!再考虑考虑
      

  2.   

    1. 用这些图形的边缘形成扫描点,然后用扫描点填充的方式拷贝。(只能适用较简单的规则图形。或者你支持任意多边形)
    2. 建一个Mask图,有Mask图中有效部分拷贝。(对各种复杂图形适用)
      

  3.   

    要看具体A,B ,DC 的表面的内容了,如果A 中 圆形区域的内容与周围其他地方不一样,可以设设置颜色键过滤,直接 Blt 上去就可以, 如果是随机切A 的 一个圆区域贴到B区域,设置圆周 边线为一与周围不同的单色 ,直接写A DC内容到B DC 上,写到圆周附近 如发现像素点与你设置的相同,你就知道写道边上了,可以不咬写道外面了。 当然 ,如果 你HOOK 驱动的DrvBitBlt 或 DrvFillPath 等 可以更简单的高定  。
      

  4.   

    你在b中放一个picture控件
    然后在里面画不就可以了
      

  5.   

    最简单偶想应该是先对目标DC做SelectClipRgn了吧。
      

  6.   

    http://blog.csdn.net/platform/archive/2006/08/12/1055565.aspx不规则多边形相交计算
    -----------------------------------
    这个应该有一些启发的!