Search code examples
c#.netwpfonpaint

How to create inverse png image?


i am creating png image which painted on my base, from the base i can save a png image, for your reference

Graphics g = e.Graphics;
 ....
g.DrawLine(pen, new Point(x, y), new Point(x1, y1));
 .....
base.OnPaint(e);

using (var bmp = new Bitmap(500, 50))
{
    base.DrawToBitmap(bmp, new Rectangle(0, 0, 500, 50));
    bmp.Save(outPath);
}

this is single color transparency image, now how do i can inverse this image like png filled with any color and the real image portion should be transparent, is there any possibilities?

bit detail : so transparent will go nontransparent and where there is fill will go to transparent


Solution

  • EDIT (thanks for Thomas notation)

    public void ApplyInvert()  
    {  
        byte A, R, G, B;  
        Color pixelColor;  
    
        for (int y = 0; y < bitmapImage.Height; y++)  
        {  
            for (int x = 0; x < bitmapImage.Width; x++)  
            {  
                pixelColor = bitmapImage.GetPixel(x, y);  
                A = (byte)(255 - pixelColor.A); 
                R = pixelColor.R;  
                G = pixelColor.G;  
                B = pixelColor.B;  
                bitmapImage.SetPixel(x, y, Color.FromArgb((int)A, (int)R, (int)G, (int)B));  
            }  
        }  
    }
    

    from here : Image Processing in C#: Inverting an image