不知道以下代码是否对你有帮助:
Bitmap hehe = new Bitmap(this.pictureBoxButtomLeft.Image,this.pictureBoxButtomLeft.Image.Width,this.pictureBoxButtomLeft.Image.Height);
System.Drawing.Color temp = hehe.GetPixel(i,j);for(int i = 0;i<this.pictureBoxButtomLeft.Image.Width;i++)
{
for(int j=0;j<this.pictureBoxButtomLeft.Image.Height;j++)
{
System.Drawing.Color temp = hehe.GetPixel(i,j); int avg = (Convert.ToInt32(temp.G)+Convert.ToInt32(temp.B)+Convert.ToInt32(temp.R))/3;
byte temp11 = Convert.ToByte(avg);
System.Drawing.Color tempcolor = System.Drawing.Color.FromArgb(temp11,temp11,temp11);

hehe.SetPixel(i,j,yh);
}
}
this.pictureBoxButtomMiddle.Image = hehe;是将一个图片的RGB取出,取平均值的

解决方案 »

  1.   

    你的objShape.Fill.BackColor.RGB是个什么类型???不能直接赋值吗??System.Drawing.Color.White.R就可以得到r分量的值,其他的一样呀!
      

  2.   

    System.Drawing.Color.White.R就可以得到r分量的值,其他的一样呀!
    同意
      

  3.   

    objShape.Fill.BackColor.RGB是一个int类型
      

  4.   

    了解了,int的是32位,是这样算的,8bit一组,分别是R,G,B和透明度,你先得到RGB三个分量,透明度先赋0,组成一个32bit的东东,再转换成int的赋值过去就可以了
      

  5.   

    “组成一个32bit的东东,再转换成int的赋值过去就可以了",如何组合?如何转换?
      

  6.   

    int rgb = Convert.ToInt32(temp.R)*8*8*8+Convert.ToInt32(temp.G)*8*8+Convert.ToInt32(temp.B)*8;
      

  7.   

    sorry,又糊涂了,应该是2的8次方,我怎么写成了*8。。但这里有一个问题,那就是int型的最大值是ox7FFFFFFF,不是oxFFFFFFFF,这样的话岂不是R的分量值只能在0~127间,不能达到255???(在c#里你如果写int i = oxFFFFFFFF的话,不会通过编译)这里的objShape.Fill.BackColor.RGB应该是个System.UInt32吧????
      

  8.   

    System.Drawing.Color color1 = System.Drawing.Color.FromArgb(透明度,红,绿,蓝)
    System.Drawing.Color color2 = System.Drawing.Color.FromArgb(红,绿,蓝)
    注意,不是通过new得到的。