我做的界面上两个picture有两幅彩色图片,一个按钮,现在要单击一下按钮将两幅彩色图片转换成黑白图片,并在另外两个picture控件上显示,请问程序如何编写?

解决方案 »

  1.   


    因为红绿兰对视觉的刺激程度不同,所以采用算法 R*0.3+G*0.59+B*0.11 比较好,但这不是唯一的算法,常用的还有其他三种,共四种: 
    1. R*0.299 + G*0.587 + B*0.114 
    (这其实就是上面所说的算法,只是权值更精确了一些 )
    2. R*0.45+G*0.35+B*0.20 
    3. max( R, G, B ); 
    4. avg( R, G, B ); (windows 中自带的画图软件就使用这种算法。 )书籍上介绍的一般都是:
    灰度值 = (R*30 + G*59 + B*11 ) / 100
    把 R,G,B都赋值为该亮度值,就可得到灰度图象。
    无调色板的真彩色,直接修改数据。
    有调色板的直接修改调色板中的RGB。
      

  2.   

    这个算法公式我知道,见过很多次,可我vc真的不怎么会用,程序不知道怎么写啊,哪位老兄知道加我qq好吗,帮帮我啊,分数都给你们!
      

  3.   

    灰度化就是从彩色图像转化为黑白图像,可以举个简单例子,在word里通过灰度化可以看到你的彩色图片打印出来的黑白效果。
      

  4.   

    用VC很容易啊,你找到 图片在内存中的数据区,
    从数据区里面找到每一个像素的 R,G,B分量,
    按公式
    n= R*0.3+G*0.59+B*0.11 
    计算后,再把值赋给 R,G,B,处理完后把数据区拷贝给 另一幅图片。
      

  5.   

    不用那么麻烦的,用BitBlt函数就可以搞定,调用的时候最后一个参数指定进行位运算与,或之类的。可以找找MSDN里面"How To Drawing Transparent Bitmaps"这一章,原理就跟构造一个图像的mask一样。