You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义DataGridView的TopLeftHeaderCell添加背景图时的尺寸问题

DataGridView左上角表头单元格背景图显示异常及解决

问题场景

尝试在自定义DataGridView的TopLeftHeaderCell(左上角表头单元格)中添加背景图,原图分辨率为835x835。将图片调整为单元格尺寸后,单元格却显示全黑,图片未被正确缩放。初始实现代码如下:

Private Sub dtg_CellPainting(ByVal sender As Object, ByVal e As DataGridViewCellPaintingEventArgs) Handles Me.CellPainting
    
    If e.RowIndex < 0 AndAlso e.ColumnIndex < 0 Then
        Dim dgvCellTopLeftHeader As DataGridViewCell = Me.TopLeftHeaderCell
        Dim bmpTopLeftHeaderResized As Bitmap = New Bitmap(My.Resources.Resources.expand_black, New Size(dgvCellTopLeftHeader.Size.Width, dgvCellTopLeftHeader.Size.Height))
        e.Graphics.DrawImage(bmpTopLeftHeaderResized, e.CellBounds)
        e.Handled = True
    End If
End Sub

最终实现代码

经帮助后,以下是实现左上角表头单元格自定义图片居中显示的最终代码:

If e.RowIndex < 0 AndAlso e.ColumnIndex < 0 Then
    e.Graphics.FillRectangle(Brushes.White, e.CellBounds.X + 2, e.CellBounds.Y + 1, CInt(e.CellBounds.Width * 0.85), CInt(e.CellBounds.Height * 0.85))
    e.Graphics.DrawImage(Dumbow_2.My.Resources.Resources.expand_black_128, e.CellBounds.X + 10, e.CellBounds.Y + 4, CInt(e.CellBounds.Width * 0.5), CInt(e.CellBounds.Height * 0.55))
    e.Handled = True
End If

内容的提问来源于stack exchange,提问作者8oris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 10:42:18