【问题标题】:C# DataGridView - Transparent ImageC# DataGridView - 透明图像
【发布时间】:2016-09-27 04:29:09
【问题描述】:

我正在尝试使用图像填充 DataGridView 单元格。该图像是具有 Alpha 透明度的 32 位 png。

我可以让此图像在图片框或列表视图中正确显示,但在 DataGridView 中图像质量下降。

我尝试将控件的各个部分设置为透明,但似乎没有任何效果。我将图片导入资源文件,然后直接调用。

我觉得我需要重写 onpaint 事件来解决透明度/颜色深度问题,但我不完全确定。

如果有任何帮助,我将不胜感激!

顶部的图像来自图片框,底部的两个在 DataGridView 中。

*由于我无法使用图像标签,请参阅以下链接以获取问题示例

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

【问题讨论】:

  • 将 DataGridView 控件添加到您的表单。将以下代码添加到 formload: Bitmap testImage = new Bitmap(@"C:\pathtoyourimage.png"); dataGridView1.AutoSizeRowsMo​​de = DataGridViewAutoSizeRowsMo​​de.AllCells; DataGridViewImageColumn imageColumn = new DataGridViewImageColumn(); dataGridView1.Columns.Add(imageColumn); dataGridView1.Rows.Add(testImage);

标签: c# datagridview transparency


【解决方案1】:

我遇到了同样的问题。我的 32 位 png 图像在 DataGridView 中看起来很糟糕。我所做的是将我的 png 文件转换为 .ico 格式(我使用了http://www.convertico.com/),然后将其添加到网格中。

我所做的是设置 displayCell.ValueIsIcon = True 以使 DataGridViewImageCell 将我的图像视为图标。

这对我有用。现在图标看起来不错...

【讨论】:

    【解决方案2】:

    我用较低分辨率的 gif 进行了测试,看起来可以接受。我使用的 PNG 是 32 位(带有 8 位 alpha 通道),我认为这超出了 DataGridView 图像列可以处理的深度。

    感谢所有提供意见的人。非常感谢!

    【讨论】:

      【解决方案3】:

      对此我不确定,但似乎这可能是一个调整大小的问题,而不是透明度问题(或调整大小/透明度交互的问题)。尝试使用与在 DataGridView 中呈现的大小完全相同的逐像素尺寸的 PNG 文件。

      【讨论】:

      • 我希望是这样,但我可以将单元格高度设置为精确大小或大于图像,它仍然显示为示例中所示。
      • 您能否发布一个代码示例,或者最好是一个指向显示此问题的简单项目的链接?我对此很好奇,因为这是一个奇怪的问题,但我不想弄清楚将图像加载到 DataGridView 的基础知识。它看起来有点像 DataGridView 正在尝试(并且惨遭失败)在图像周围绘制某种边框效果。
      • 将 DataGridView 控件添加到您的表单。将以下代码添加到 formload: Bitmap testImage = new Bitmap(@"C:\pathtoyourimage.png"); dataGridView1.AutoSizeRowsMo​​de = DataGridViewAutoSizeRowsMo​​de.AllCells; DataGridViewImageColumn imageColumn = new DataGridViewImageColumn(); dataGridView1.Columns.Add(imageColumn); dataGridView1.Rows.Add(testImage);
      • @NSH:我认为您的问题要么是您的计算机异常,要么是您使用的 PNG 文件异常。使用您的示例代码(谢谢),我能够在 DataGridView 中加载一堆不同的 PNG 文件(全部具有透明性),它们看起来都很完美和正常(没有奇怪的伪影)。发布一个指向您的原始 PNG 文件的链接,我会在我的计算机上查看它的外观。
      • 我用较低分辨率的 gif 进行了测试,看起来可以接受。我使用的 PNG 是 32 位(带有 8 位 alpha 通道),我认为这超出了 DataGrideView 图像列可以处理的深度。
      【解决方案4】:

      我在使用 ImageList 时遇到了这个问题,一旦我切换到位图数组,它就可以正常工作了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多