We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date

.png image in a grid

Hi - I have a derived GridStaticCellModel that I'm adding to .Model.CellModels. The context of the GridStaticCellModel (passed to the constructor) is a bitmap, loaded from a stream, which loads a .png graphic that has some transparency. Using the PrepareViewStyleInfo event, I set e.Style.CellType, and the graphic appears in the grid, but the transparency is gone - turned to white. Am I doing something wrong, or is this a limitation of the grid, or .NET? Thanks!

7 Replies

AD Administrator Syncfusion Team February 6, 2003 08:03 PM UTC

Did you set the alpha-value for the Interior of the cell? Otherwise the cell background will be repainted with a solid color before the bitmap is drawn. Also, try the drawing code for the .png outside the grid in a regular form. Does it draw transparent then? If not, try ImageList.Draw - I believe ImageList has better support for transparency than Bitmap.Draw. Stefan


IP Ivan Pelly February 11, 2003 07:46 PM UTC

I didn't try the alpha value for the cell interior - where does one set that? My code is using System.Grapics.DrawImage (according to the suggestion in the Grid Forum under the thread titled "Image Alignment in a Cell" dated 11/18/2002) to draw the image. Should I be using some other method? Thanks again, Ivan


AD Administrator Syncfusion Team February 12, 2003 12:06 PM UTC

You can set the alphablend value with style.Interior = new BrushInfo(Color.FromArgb(alphaValue, color)); That will make cell have a transparent effect and display a image behind the grid as shown in the gridpad example. For drawing transparent images we found that Graphics.DrawImage does not support alphablending well. So what we use instead ImageList.Draw. For that to work you would have to create a image list, add the image and then call its Draw method. (I don't have a sample for this right now - I would have to look into closer first.) Best is if you try to get drawing code working fist on a regular form with no grid involved. Once you know this is working you can then use your drawing routine within the grid. Stefan


AD Administrator Syncfusion Team February 14, 2003 02:17 PM UTC

I think Stefan had in mind trying to treat the entire bitmap as transparent in some manner. But if you just want to draw with a single transparent color on your bitmap, attached is a sample that does this. You will have to change the path to the bmp file to get it to run. It call the Bitmap.MakeTransparent to make a particular color transparent. Note that the bitmap was loaded with a Bitmap.FromFile call. I could not get the MakeTranparent call to work on a bitmap that came from an embedded resource.


IP Ivan Pelly February 18, 2003 12:32 PM UTC

Actually I was trying to make use of the .png graphic format instead of a .bmp, since .png supports degrees of transparency (rather than just transparent or not). This makes for a better looking image, because the edges don't have that jagged bitmap look (I've attached a sample). I substituted in a .png image in the sample code provided in the 11/20/2002 post entitled "Image Alignment in a Cell", and the .png image draws fine, except that the areas that should be transparent are rendered as white, which is fine unless the backcolor in the cell isn't white. I was hoping to have the edges fade into whatever color the background happens to be. Thanks again.


AD Administrator Syncfusion Team February 18, 2003 03:59 PM UTC

If you swap the bitmap1.bmp file with your TinyA.bmp file in the sample that I earlier attached to this thread, you do not see any white borders on the cell using white as the transparent color.


AD Administrator Syncfusion Team February 18, 2003 04:00 PM UTC

should have written TinyA.png instead of TinyA.bmp....

Loader.
Up arrow icon