如题,函数外观如下:
public function RemixPic(B as StdPicture,T as StdPicture,MarkColor as long) as StdPictureend function注意:1、要求能合成一个StdPicture对象,2、内存操作请高手解答!

解决方案 »

  1.   

    stdPicture实质上是对图像的操作,两个stdPicture对象合并成一个,是指两个图像左右拼接还是上下拼接,还是重叠?而重叠的操作又有很多操作的,比如and,xor。楼主得说清楚。
      

  2.   

    建议看看"提问的智慧":http://community.csdn.net/IndexPage/SmartQuestion.aspx
      

  3.   

    好吧,我将所有的参数说明如下:
    public function RemixPic(B as StdPicture,T as StdPicture,MarkColor as long,X as long,Y as long) as StdPicture'B:背景图
    'T:前景图
    'MarkColor :去掉前景图中的指定色
    'X,Y:在指定的X,Y点混合如果超出背景图,不做处理(即裁掉超出背景图部分)。
    '返回合成后的StdPicture对象
    end functionTO VBToy(无证编程): 应该与 and,xor 无关,我只要能扫描像素点能做处理就成。重点在于将两个StdPicture合成一个。TO kmlxk(xiaoKKKK):bitblt 我试过,能叠加,但不是合成方式。(即能显示两张图片在一起,但再引用时,只是一张背景图。)TO laviewpbt(人一定要靠自己) :你水平很高的说,请做答,不要说空话。白混了两颗星了。
      

  4.   

    就是模拟transparentblt的效果吗(多了个透明色),如果是的话,你还要有个透明度,不然两幅图片谁知道你用什么方法来计算结果色啊 ,X,Y参数的存在是不是多于的,在程序里判断两幅图片重叠的区域不就可以了 。如果不是这个意思,请你在表述清楚点,这个功能很容易实现。
      

  5.   

    我的QQ是:17726260,验证CSDN,有能帮我的朋友,加下我。QQ详聊。
      

  6.   

    还是好好看看bitblt的应用吧,透明图片的绘画好像是通过两次调用bitblt使用不同的绘画模式来完成的.
      

  7.   

    的确表述目的不明,但大致能看出LZ的意思不是拼接,而是叠加。
    叠加种类很多,常见需求的一般有两类:一是透明,一是Alpha混合。
    前者用transparentblt可完成,后者用AlphaBlend可完成
    当然若基于位图Bit,自己处理数据也可以,但若没有特殊需求,没这必要。补充:以上都是要靠API来完成的,所以直接用hDC、hBmp传入会更方便,用StdPicture有些自废武功的味道,会影响效率的。若LZ仅是我前面列出的两种需求之一,几乎可以不用再写函数,一句API能直接搞定。
      

  8.   

    我看还是我用图来示意比较直观
    请参看
    http://esnstudio.blog.sohu.com/52396049.html
      

  9.   

    这个麻烦了,同时有去除关键色和Alpha混合两种要求。
    不管如何,首先肯定得创建两个DC,然后把这两个StdPicture选进去。
    再创建一个目标DC,选进一个新的StdPicture作为结果。然后就是AlphaBlend和TransparentBlt函数的调用了,前者用于Alpha混合,后者用于去除关键色,具体步骤根据自己想要的效果进行调用即可。不过就你的要求来看可能还需要临时DC。不知道LZ想要用它来干吗,不过实际中很少有这么用的,要实现这样的功能一般都直接选择带Alpha通道DIB了,没有这么麻烦的。
      

  10.   

    问一下:
    vb 中使用MMControl播音的时候,资源被占用了,其他程序模块都需要等待播音结束才运行,如何解决
      

  11.   

    图片合成:http://topic.csdn.net/t/20060427/08/4716865.html