Im trying to generate a small square 32 by 32 pixels with a 10 by 10 squareish transparent gap in the middle.
This is what I have so far:
private Image CreatePicture(){ // Create a new Bitmap object, 32 x 32 pixels in size Bitmap canvas = new Bitmap(32,32,System.Drawing.Imaging.PixelFormat.Format16bppRgb555); for(int i=10;i<21;i++){ for(int p=10;p<21;p++){ canvas.SetPixel(i,p,Color.Lime); } } canvas.MakeTransparent(Color.Lime); // return the picture return canvas; }
Its a it rough and not going to be the final ‘optimized version’ its just a rough demo script. The problem is the returned image does not transparency instead its just a grey box :(.
Any help appreciated.
Michael
UPDATE: I have updated the script with the PixelFormat set to an Alpha RGB format which it actually accepts without erroring on runtime. Now though if I remove the ‘canvas.MakeTransparent(Color.Lime);’ line it shows a lime box in the middle with it it just shows a grey box the same colour as the grey background; so it seems as if transparency is being recognised just not implimenting the transparency!
private Bitmap CreatePicture(){ // Create a new Bitmap object, 50 x 50 pixels in size Bitmap canvas = new Bitmap(82,82,System.Drawing.Imaging.PixelFormat.Format32bppArgb); for(int i=10;i<71;i++){ for(int p=10;p<71;p++){ canvas.SetPixel(i,p,Color.Lime); } } canvas.MakeTransparent(Color.Lime); // return the picture return canvas; }
It depends on how your going to use or display the image. PNG and Gif are the two file formats that support transparency.
For the bitmap setting of transparency, i used:
Graphics.FromImage(bitmap).FillRectangle(Brushes.Transparent, …) to set the area I wanted as transparent, then I saved the file out as a PNG to get an image with transparency.
I also tried the MakeTransparent method and ran into problems and the Brushes.Transparent was the solution that worked for my situation.
Hope this gives you a direction to look into.
One last note, I create the Bitmap object with width and height only, I don’t specify the pixel format or whatever that’s called i.e. bitmap = New Bitmap(width, height);