Ich zeichne auf Panel in Windows.Forms
.
Wenn ich Doppelpufferung wie hier verwende, kann ich nur rechteckigen Bereich zuweisen.Double Buffering nicht-rechteckige Zuordnung
Und wenn ich Kreis oder Ellipse zeichne verbleibende Raum ist mit schwarzer Farbe gefüllt.
Bitte helfen Sie mir herauszufinden, was ich falsch mache oder wie ich mit diesem Problem umgehen kann.
Vielen Dank im Voraus! :)
Ich versuchte this.DoubleBuffered = true
zu verhindern, dass Flimmern. Es nützt nichts.
Var p
ist Panel, um etwas darauf zu zeichnen.
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);
}
}
Aber wenn das, was ich transparent Backcolor will, weil ich Formularhintergrundbild Muster verwenden? –
siehe oben beschriebene Änderungen – Sisyphus
Vielen Dank. Ich schätze :) –