我需要DataGridView单元格中的透明度(即grid1.Rows[0].Cells[0].Style.BackColor = Color.FromArgb(20,120,120,120);
)。我知道我需要创建一个新控件并继承DataGridView并将控件的背景设置为父颜色,这样我就能在单元格中使用透明度。
this回答:
已经涵盖了这一点protected override void PaintBackground(Graphics graphics, Rectangle clipBounds, Rectangle gridBounds)
{
base.PaintBackground(graphics, clipBounds, gridBounds);
Rectangle rectSource = new Rectangle(this.Location.X, this.Location.Y, this.Width, this.Height);
Rectangle rectDest = new Rectangle(0, 0, rectSource.Width, rectSource.Height);
Bitmap b = new Bitmap(Parent.ClientRectangle.Width, Parent.ClientRectangle.Height);
Graphics.FromImage(b).DrawImage(this.Parent.BackgroundImage, Parent.ClientRectangle);
graphics.DrawImage(b, rectDest, rectSource, GraphicsUnit.Pixel);
// I would like to set background the same as parent's background here
}
但是,仅当父级具有背景图像时才有效。答案的作者也说了
[...]只是询问父母是否有背景图片,其他只是使用 父背景颜色绘制你的网格,这就是。
那么如何使用父母的背景颜色?