Search code examples
c#.netimageimage-processing

Changing the Opacity of a Bitmap image


I have a form which has a image. I am using a slider to change the opacity of the image. So in the "ValueChanged" event of the slider I am calling the following method to change the opacity.

//Setting the opacity of the image
public static Image SetImgOpacity(Image imgPic, float imgOpac)
{   
     Bitmap bmpPic = new Bitmap(imgPic.Width, imgPic.Height);
     Graphics gfxPic = Graphics.FromImage(bmpPic);

     ColorMatrix cmxPic = new ColorMatrix();   
     cmxPic.Matrix33 = imgOpac;   
     ImageAttributes iaPic = new ImageAttributes();   
     iaPic.SetColorMatrix(cmxPic, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);  
     gfxPic.DrawImage(imgPic, new Rectangle(0, 0, bmpPic.Width, bmpPic.Height), 0, 0, imgPic.Width, imgPic.Height, GraphicsUnit.Pixel, iaPic);  
     gfxPic.Dispose();            

     return bmpPic;  
}

The returned Image is set to the original image.

My problem is that the opacity of the image is not changing... If there is any error please be kind enough to point out.. Thnx...


Solution

  • Try this one from CodeProject - Change Opacity of Image in C#:

    /// <summary>  
    /// method for changing the opacity of an image  
    /// </summary>  
    /// <param name="image">image to set opacity on</param>  
    /// <param name="opacity">percentage of opacity</param>  
    /// <returns></returns>  
    public Image SetImageOpacity(Image image, float opacity)  
    {  
        try  
        {  
            //create a Bitmap the size of the image provided  
            Bitmap bmp = new Bitmap(image.Width, image.Height);  
    
            //create a graphics object from the image  
            using (Graphics gfx = Graphics.FromImage(bmp)) {  
    
                //create a color matrix object  
                ColorMatrix matrix = new ColorMatrix();      
    
                //set the opacity  
                matrix.Matrix33 = opacity;  
    
                //create image attributes  
                ImageAttributes attributes = new ImageAttributes();      
    
                //set the color(opacity) of the image  
                attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);    
    
                //now draw the image  
                gfx.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, attributes);
            }
            return bmp;  
        }  
        catch (Exception ex)  
        { 
            MessageBox.Show(ex.Message);  
            return null;  
        }  
    }