假设我要画三个圆,颜色分别为R,G,B
这三个圆有重叠部分,重叠部分要按混色来显示
例如圆R和圆G重叠的部分就显示(R+G)的颜色
可是我现在实现的显示是覆盖,求大侠指点

解决方案 »

  1.   

    1.CreateSolidBrush();//RGB()=混色
    2.CreateRgn();// 取重叠部分
    3,。FillRgn();// 按混色画区域。
      

  2.   

    创建区域句柄,分别获取几个重叠区域的句柄,然后再计算重叠颜色。
    //下面是搜到的计算方法,没有验证过。
    假设一幅图象是A,另一幅透明的图象是B,那么透过B去看A,看上去的图象C就是B和A的混合图象,设B图象的透明度为alpha(取值为0-1的浮点数,1为完全透明,0为完全不透明),Alpha混合公式如下:  R(C)=(1-alpha)*R(B)+alpha*R(A)  G(C)=(1-alpha)*G(B)+alpha*G(A)  B(C)=(1-alpha)*B(B)+alpha*B(A)
      

  3.   

    SetROP2() ?
    http://msdn.microsoft.com/zh-cn/library/99ax95h9(v=vs.80)
      

  4.   


    首先感谢你提供的方法
    但是效率上面很慢,如果我要填充的区域是些不规则的区域,
    计算区域之间的交集要费很多时间我记得GDI里面有个设置draw mode的函数
    SetROP2()里面可以设置前景色与背景色的交互方式,
    但是我只会GDI+,不会GDI
    所以想请教下,可不可以用这个函数实现我想要的功能