采用picturebox做的一个小画图程序中,需要产生颜色合成效果。如 假设第一笔画是蓝色,第二笔画是
黄色,两笔画交叉处是合成的绿色。
      通过设置drawmode参数好像并不能产生这样的效果。我试过的另外一种方式是鼠标move时动态
获取当前x,y坐标下的颜色然后与画笔颜色合成,再用合成的颜色更新picturebox的前景色,不过这样
还是达不到效果。
      不知道大家是否有好的解决方案?

解决方案 »

  1.   

    用Picture1.Point(X, Y)方法获取PictureBOX在X,Y坐标处的颜色值ColorV = Picture1.Point(X, Y) 
    RedV = (ColorV Mod 65536) Mod 256 'Red 
    GreenV = (ColorV  Mod 65536) \ 256 'Green 
    BlueV = ColorV  \ 65536 'Blue 然后与画笔颜色的RGB值分别相加取平均值RedPV,greenPv, bluePV
    赋值给Picture1.FillColor
    Picture1.FillColor = RGB(RedPV,greenPv, bluePV) 
    参阅:http://iask.sina.com.cn/b/4525207.html
      

  2.   

    稍微用一个API函数BitBlt就可以实现,不过抛开VB自带的绘图函数是不是还符合楼主的初衷呢。
    用的话,最后一个参数传vbSrcPaint
      

  3.   

    将PICTURE的DRAWMODE设为OR就可以了
      

  4.   

    BitBlt 肯定是行,主要是难在画图过程中动态显示合成过程。
    忙了大半天,算是搞定了吧,谢了各位。