Graphics g = this.CreateGraphics();
c#图片中的重绘_c#g.Clear(Color.White);
c#图片中的重绘_c#Bitmap image 
= new Bitmap("test.jpg");
c#图片中的重绘_c#
int Width = image.Width - 1;
c#图片中的重绘_c#
int Height = image.Height - 1;
c#图片中的重绘_c#
c#图片中的重绘_c#            
//绘制原图   
c#图片中的重绘_c#
g.DrawImage(image, 00);
c#图片中的重绘_c#g.TranslateTransform(image.Width, 
0);
c#图片中的重绘_c#
/*image2、image3分别用来保存最大值法   
            和加权平均法处理的灰度图像
*/

c#图片中的重绘_c#Bitmap image2 
= image.Clone(new Rectangle(00, image.Width,image.Height),PixelFormat.DontCare);
c#图片中的重绘_c#Bitmap image3 
= image.Clone(new Rectangle(00, image.Width,image.Height),PixelFormat.DontCare);
c#图片中的重绘_c#
c#图片中的重绘_c#Color color;
c#图片中的重绘_c#_14c#图片中的重绘_c#_15
使用平均值进行灰度处理#region 使用平均值进行灰度处理
c#图片中的重绘_灰度_16
//使用平均值进行灰度处理   
c#图片中的重绘_灰度_16
            for (int i = Width; i >= 0; i--)
c#图片中的重绘_c#_18c#图片中的重绘_image_19            
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                
for (int j = Height; j >= 0; j--)
c#图片中的重绘_c#_18c#图片中的重绘_image_19                
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                    color 
= image.GetPixel(i, j);
c#图片中的重绘_灰度_16                    
//求出平均三个色彩分量的平均值   
c#图片中的重绘_灰度_16
                    int middle = (color.R + color.G + color.B) / 3;
c#图片中的重绘_灰度_16                    Color colorResult 
= Color.FromArgb(255, middle, middle, middle);
c#图片中的重绘_灰度_16                    image.SetPixel(i, j, colorResult);
c#图片中的重绘_位图_30                }

c#图片中的重绘_位图_30            }

c#图片中的重绘_灰度_16            
//重新绘制灰度化图   
c#图片中的重绘_灰度_16
            g.DrawImage(image, new Rectangle(00, Width, Height));
c#图片中的重绘_灰度_16
c#图片中的重绘_灰度_16            
//在新位置显示最大值法进行灰度处理的结果   
c#图片中的重绘_灰度_16
            g.TranslateTransform(image.Width, 0);
c#图片中的重绘_image_37            
#endregion

c#图片中的重绘_c#_14c#图片中的重绘_c#_15
使用最大值法进行灰度处理#region 使用最大值法进行灰度处理
c#图片中的重绘_灰度_16            
//使用最大值法进行灰度处理   
c#图片中的重绘_灰度_16
            for (int i = Width; i >= 0; i--)
c#图片中的重绘_c#_18c#图片中的重绘_image_19            
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                
for (int j = Height; j >= 0; j--)
c#图片中的重绘_c#_18c#图片中的重绘_image_19                
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                    color 
= image2.GetPixel(i, j);
c#图片中的重绘_灰度_16                    
int tmp = Math.Max(color.R, color.G);
c#图片中的重绘_灰度_16                    
int maxcolor = Math.Max(tmp, color.B);
c#图片中的重绘_灰度_16                    Color colorResult 
= Color.FromArgb(255, maxcolor, maxcolor, maxcolor);
c#图片中的重绘_灰度_16                    
//设置处理后的灰度信息   
c#图片中的重绘_灰度_16
                    image2.SetPixel(i, j, colorResult);
c#图片中的重绘_位图_30                }

c#图片中的重绘_位图_30            }

c#图片中的重绘_灰度_16
c#图片中的重绘_灰度_16            
//重新绘制灰度化图   
c#图片中的重绘_灰度_16
            g.DrawImage(image2, new Rectangle(00, Width, Height));
c#图片中的重绘_灰度_16            
//在第二行绘制图片   
c#图片中的重绘_灰度_16
            g.ResetTransform();
c#图片中的重绘_灰度_16            g.TranslateTransform(
0, image.Height);
c#图片中的重绘_image_37            
#endregion

c#图片中的重绘_c#_14c#图片中的重绘_c#_15
使用加权平均法进行灰度处理#region 使用加权平均法进行灰度处理
c#图片中的重绘_灰度_16            
//使用加权平均法进行灰度处理   
c#图片中的重绘_灰度_16
            for (int i = Width; i >= 0; i--)
c#图片中的重绘_c#_18c#图片中的重绘_image_19            
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                
for (int j = Height; j >= 0; j--)
c#图片中的重绘_c#_18c#图片中的重绘_image_19                
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                    color 
= image3.GetPixel(i, j);
c#图片中的重绘_灰度_16                    
int R = (int)(0.3f * color.R);
c#图片中的重绘_灰度_16                    
int G = (int)(0.59f * color.G);
c#图片中的重绘_灰度_16                    
int B = (int)(0.11f * color.B);
c#图片中的重绘_灰度_16
c#图片中的重绘_灰度_16                    Color colorResult 
= Color.FromArgb(255, R, G, B);
c#图片中的重绘_灰度_16                    
//设置处理后的灰度信息   
c#图片中的重绘_灰度_16
                    image3.SetPixel(i, j, colorResult);
c#图片中的重绘_位图_30                }

c#图片中的重绘_位图_30            }

c#图片中的重绘_灰度_16            
//重新绘制灰度化图   
c#图片中的重绘_灰度_16
            g.DrawImage(image3, new Rectangle(00, Width, Height));
c#图片中的重绘_灰度_16
c#图片中的重绘_灰度_16            g.TranslateTransform(image.Width, 
0);
c#图片中的重绘_image_37            
#endregion

c#图片中的重绘_c#_14c#图片中的重绘_c#_15
灰度的还原演示,还原使用最大值法处理的灰度图像image2#region 灰度的还原演示,还原使用最大值法处理的灰度图像image2
c#图片中的重绘_灰度_16            
//灰度的还原演示,还原使用最大值法处理的灰度图像image2   
c#图片中的重绘_灰度_16
            for (int i = Width; i > 0; i--)
c#图片中的重绘_c#_18c#图片中的重绘_image_19            
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                
for (int j = Height; j > 0; j--)
c#图片中的重绘_c#_18c#图片中的重绘_image_19                
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                    color 
= image2.GetPixel(i, j);
c#图片中的重绘_灰度_16                    
int R = color.R;
c#图片中的重绘_灰度_16                    
int G = color.G;
c#图片中的重绘_灰度_16                    
int B = color.B;
c#图片中的重绘_灰度_16                    
//分别对RGB三种色彩分量进行伪彩色还原   
c#图片中的重绘_灰度_16
c#图片中的重绘_灰度_16                    
//进行红色分量的还原   
c#图片中的重绘_灰度_16
                    if (R < 127)
c#图片中的重绘_灰度_16                        R 
= 0;
c#图片中的重绘_灰度_16                    
if (R >= 192)
c#图片中的重绘_灰度_16                        R 
= 255;
c#图片中的重绘_灰度_16                    
if (R <= 191 && R >= 128)
c#图片中的重绘_灰度_16                        R 
= 4 * R - 510;
c#图片中的重绘_灰度_16
c#图片中的重绘_c#_18c#图片中的重绘_image_19                    
/**//*进行绿色分量的还原,为了还原后的绿色分量再次参加比较,   
c#图片中的重绘_位图_30                    这里设置一个变量YES表示G是否已经参加了比较
*/

c#图片中的重绘_灰度_16
c#图片中的重绘_灰度_16                    
bool yes;
c#图片中的重绘_灰度_16                    yes 
= false;
c#图片中的重绘_灰度_16                    
if (G <= 191 && G >= 128 && (!yes))
c#图片中的重绘_c#_18c#图片中的重绘_image_19                    
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                        G 
= 255;
c#图片中的重绘_灰度_16                        yes 
= true;
c#图片中的重绘_位图_30                    }

c#图片中的重绘_灰度_16                    
if (G >= 192 && (!yes))
c#图片中的重绘_c#_18c#图片中的重绘_image_19                    
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                        G 
= 1022 - 4 * G;
c#图片中的重绘_灰度_16                        yes 
= true;
c#图片中的重绘_位图_30                    }

c#图片中的重绘_灰度_16                    
if (G <= 63 && (!yes))
c#图片中的重绘_c#_18c#图片中的重绘_image_19                    
c#图片中的重绘_image_20{
c#图片中的重绘_灰度_16                        G 
= 254 - 4 * G;
c#图片中的重绘_灰度_16                        yes 
= true;
c#图片中的重绘_位图_30                    }

c#图片中的重绘_灰度_16                    
if (G <= 127 && G >= 67 && (!yes))
c#图片中的重绘_灰度_16                        G 
= 4 * G - 257;
c#图片中的重绘_灰度_16
c#图片中的重绘_灰度_16                    
//进行蓝色分量的还原   
c#图片中的重绘_灰度_16
                    if (B <= 63)
c#图片中的重绘_灰度_16                        B 
= 255;
c#图片中的重绘_灰度_16                    
if (B >= 128)
c#图片中的重绘_灰度_16                        B 
= 0;
c#图片中的重绘_灰度_16                    
if (B >= 67 && B <= 127)
c#图片中的重绘_灰度_16                        B 
= 510 - 4 * B;
c#图片中的重绘_灰度_16
c#图片中的重绘_灰度_16                    
//还原后的伪彩色   
c#图片中的重绘_灰度_16
                    Color colorResult = Color.FromArgb(255, R, G, B);
c#图片中的重绘_灰度_16                    
//将还原后的RGB信息重新写入位图   
c#图片中的重绘_灰度_16
                    image2.SetPixel(i, j, colorResult);
c#图片中的重绘_灰度_16
c#图片中的重绘_位图_30                }

c#图片中的重绘_位图_30            }

c#图片中的重绘_image_37            
#endregion

c#图片中的重绘_c#            
//重新绘制还原后的伪彩色位图   
c#图片中的重绘_c#            
//重新绘制灰度化图  
c#图片中的重绘_c#
            g.DrawImage(image2, new Rectangle(00, Width, Height));