none
图片加蒙层 RRS feed

  • 问题

  • 好,目前需要做一个QQ截图一样的功能,点“截图”的时候屏幕显示一个灰蒙蒙的。目前已经成功获取整屏的图片作为一个screenform的背景色做截图。但没有那种蒙层效果,这样就让用户感觉不到进入截图的状态了。尝试了很久。目前觉得应该是将整屏幕图片先处理成那种蒙层效果后再赋给screenform做背景色。然后截图矩形框用未处理的展现这样。

    问题:怎么将一个图片处理后能够像QQ截图那样半透明感觉的。

    2009年12月29日 2:55

答案

  • 图片半透明可以借助于ImageAttributes ColorMartirx类来实现 参考我这篇文章
    http://hi.baidu.com/1987raymond/blog/item/652f76902dae6f85a977a481.html
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2009年12月29日 3:22
    版主
  • 图片效果
    你参照下这里http://www.cnblogs.com/xiaosuo/archive/2009/12/17/1626445.html

     private void button2_Click(object sender, EventArgs e)
            {
                //以黑白效果显示图像       
                try            {             
                    int Height = this.pictureBox1.Image.Height;             
                    int Width = this.pictureBox1.Image.Width;           
                    Bitmap newBitmap = new Bitmap(Width, Height);               
                    Bitmap oldBitmap = (Bitmap)this.pictureBox1.Image;                
                    Color pixel;           
                    for (int x = 0; x < Width; x++)                  
                        for (int y = 0; y < Height; y++)                
                        {                        
                            pixel = oldBitmap.GetPixel(x, y);                    
                            int r, g, b, Result = 0;                   
                            r = pixel.R;                      
                            g = pixel.G;                    
                            b = pixel.B;                       
                    //实例程序以加权平均值法产生黑白图像                       
                           int iType =2;                       
                         switch (iType)                    
                         {                         
                        case 0://平均值法                            
                            Result = ((r + g + b) / 3);                            
                            break;                   
                        case 1://最大值法                           
                            Result = r > g ? r : g;                        
                            Result = Result > b ? Result : b;                        
                            break;                   
                        case 2://加权平均值法                          
                            Result = ((int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b));                         
                            break;                   
                          }                      
                            newBitmap.SetPixel(x, y, Color.FromArgb(Result, Result, Result));            
                        }         
                    this.pictureBox1.Image = newBitmap;           
                }        
                catch (Exception ex)      
                {           
                    MessageBox.Show(ex.Message, "信息提示");         
                }
    
    
            }
        
        

    努力+方法=成功
    2009年12月29日 3:27

全部回复

  • 图片半透明可以借助于ImageAttributes ColorMartirx类来实现 参考我这篇文章
    http://hi.baidu.com/1987raymond/blog/item/652f76902dae6f85a977a481.html
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2009年12月29日 3:22
    版主
  • 图片效果
    你参照下这里http://www.cnblogs.com/xiaosuo/archive/2009/12/17/1626445.html

     private void button2_Click(object sender, EventArgs e)
            {
                //以黑白效果显示图像       
                try            {             
                    int Height = this.pictureBox1.Image.Height;             
                    int Width = this.pictureBox1.Image.Width;           
                    Bitmap newBitmap = new Bitmap(Width, Height);               
                    Bitmap oldBitmap = (Bitmap)this.pictureBox1.Image;                
                    Color pixel;           
                    for (int x = 0; x < Width; x++)                  
                        for (int y = 0; y < Height; y++)                
                        {                        
                            pixel = oldBitmap.GetPixel(x, y);                    
                            int r, g, b, Result = 0;                   
                            r = pixel.R;                      
                            g = pixel.G;                    
                            b = pixel.B;                       
                    //实例程序以加权平均值法产生黑白图像                       
                           int iType =2;                       
                         switch (iType)                    
                         {                         
                        case 0://平均值法                            
                            Result = ((r + g + b) / 3);                            
                            break;                   
                        case 1://最大值法                           
                            Result = r > g ? r : g;                        
                            Result = Result > b ? Result : b;                        
                            break;                   
                        case 2://加权平均值法                          
                            Result = ((int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b));                         
                            break;                   
                          }                      
                            newBitmap.SetPixel(x, y, Color.FromArgb(Result, Result, Result));            
                        }         
                    this.pictureBox1.Image = newBitmap;           
                }        
                catch (Exception ex)      
                {           
                    MessageBox.Show(ex.Message, "信息提示");         
                }
    
    
            }
        
        

    努力+方法=成功
    2009年12月29日 3:27