NSH
NSH

Reputation: 41

C# DataGridView - Transparent Image

I am attempting to populate a DataGridView cell with an image. The image is a 32bit png with Alpha Transparency.

I can get this image to display properly in a picturebox or a Listview but in the DataGridView the image loses quality.

I have tried setting various parts of the control to transparent but nothing seems to work. I import the image into resource file and then call it directly.

I have a feeling I need to override the onpaint event to resolve the transparency/color depth issue but I'm not entirely sure.

I would appreciate any help!

The top image is that from a picturebox and the bottom two are in the DataGridView.

*Since I am unable to use an image tag, please see the following link for an example of the problem

http://bytes.com/attachments/attachment/2016d1245038555/imageissue.png

Upvotes: 3

Views: 4610

Answers (4)

NSH
NSH

Reputation: 41

I have tested with a lower resolution gif and it looks acceptable. The PNG I was using is 32-Bit (with 8 bits alpha channel) and I think this is simply out of the depth that the DataGridView Image Column can handle.

Thanks to everyone who offered their input. It is very much appreciated!

Upvotes: 1

M Granja
M Granja

Reputation: 865

I was having this problem using an ImageList, once I switched to a Bitmap Array, it worked fine.

Upvotes: 0

Saab
Saab

Reputation: 1001

I came across the same problem. My 32 bits png image looked horrible in a DataGridView. What I did is convert my png file to the .ico format (I used http://www.convertico.com/), and then added it to the grid.

What I did is set displayCell.ValueIsIcon = True to make the DataGridViewImageCell treat my image as an Icon.

And that did it for me. The icons look good now...

Upvotes: 1

MusiGenesis
MusiGenesis

Reputation: 75296

I'm not sure about this, but it appears that this might be a resizing issue rather than a transparency issue (or a problem with the resizing/transparency interaction). Try using a PNG file that has exactly the same pixel-by-pixel dimensions as the size to which it's rendered in the DataGridView.

Upvotes: 0

Related Questions