我在VB.NET中開發了一個應用程序,現在我正轉向C#。C# - 圖片框中的圖片漸變
目前爲止一切都很順利,但我面臨着一個問題。
我有一個pictureBox中有一個圖片。在這個圖片框中,我想要一個從頂部透明到顏色「控制」的漸變,以便與表單背景顏色融合。我已經在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中重要的編碼。
這似乎並不可能是語言切換本身會導致此問題。一個正在執行的程序不知道它最初寫的是什麼語言。你能發佈你的原始VB.NET代碼嗎? – vcsjones
發佈的代碼工作正常。 – LarsTech
爲什麼你通過ref傳遞PictureBox1? –