パネル上に描画するのはWindows.Forms
です。
ここでのようなダブルバッファリングを使用すると、矩形領域のみを割り当てることができます。ダブルバッファリング非長方形割り当て
そして、円や楕円を描くと、残りのスペースは黒色で塗りつぶされます。
私が間違ってやっていることやこの問題に対処する方法を理解してください。
ありがとうございます! :)
私はフリッカーを防ぐためにthis.DoubleBuffered = true
を試しました。それは役に立たない。
Var p
は、それに何かを描くためのパネルです。あなたがやろうとしているか、または潜在的に間違ってここにやっていてもいなくてもよいものをどのようにコメントなし
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Dr(bool variant)
{
BufferedGraphicsContext currentContext;
BufferedGraphics myBuffer;
currentContext = BufferedGraphicsManager.Current;
myBuffer = currentContext.Allocate(panel1.CreateGraphics(), panel1.DisplayRectangle);
LinearGradientBrush lgb;
if (variant) lgb = new LinearGradientBrush(new Point(0, 0), new Point(500, 500), Color.Red, Color.DarkRed);
else lgb = new LinearGradientBrush(new Point(0, 0), new Point(500, 500), Color.DarkRed, Color.Red);
myBuffer.Graphics.FillEllipse(lgb, 0, 0, 300, 300);
myBuffer.Graphics.DrawString("Lorem ipsum", new Font("calibri", 40), Brushes.White, new PointF(50, 50));
myBuffer.Render();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Dr(true);
}
private void panel1_MouseEnter(object sender, EventArgs e)
{
Dr(false);
}
private void panel1_MouseLeave(object sender, EventArgs e)
{
Dr(true);
}
}
しかし、私は、フォームの背景画像パターンを使用していますので、私は透明のBackColorプロパティを望むものであれば:技術がここに記述されていますか? –
上記の編集を参照してください – Sisyphus
ありがとうございます。私は感謝しています:) –