VB.NET でアプリケーションを開発しましたが、現在は C# に移行しています。
ここまでは順調に進んでいますが、1 つの問題に直面しています。
写真が入った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 でコーディングします。