我已经在 VB.NET 中开发了一个应用程序,现在我正在迁移到 C#。
到目前为止一切都很顺利,但我面临一个问题。
我有一个图片框,里面有一张图片。在这个图片框上,我想要一个渐变,从自上而下的透明到颜色“控件”,以与表单背景颜色融为一体。我已经在 VB.net 中完成了这项工作,但是当我尝试在 C# 中执行此操作时,似乎绘制了渐变,但在图片后面。
这是我尝试过的:
private void PictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Color top = Color.Transparent;
Color bottom = Color.FromKnownColor(KnownColor.Control);
GradientPictureBox(top, bottom, ref PictureBox1, e);
}
public void GradientPictureBox(Color topColor, Color bottomColor, ref PictureBox PictureBox1, System.Windows.Forms.PaintEventArgs e)
{
LinearGradientMode direction = LinearGradientMode.Vertical;
LinearGradientBrush brush = new LinearGradientBrush(PictureBox1.DisplayRectangle, topColor, bottomColor, direction);
e.Graphics.FillRectangle(brush, PictureBox1.DisplayRectangle);
brush.Dispose();
}
然而,这实际上似乎有效,但它再次绘制了图片背后的渐变。在 VB.net 中,它在没有任何额外代码的情况下将其绘制在图片之上。
我需要添加任何额外的东西吗?
如果在 C# 2010 express 中编码很重要。