Forum: PC-Programmierung C# BufferedGraphics Problem


von Farin (Gast)


Lesenswert?

Hei Leute ich habe ein Problem mit den BufferedGraphics in C#. Ich 
versuche eine BufferedGraphics in einem von einem Panel abgeleiteten 
Klasse anzuzeigen. Im Constructor möchte ich die Graphics initialisieren 
und zwar mit folgendem Code:
1
private BufferedGraphicsContext context;
2
private static BufferedGraphics grafx;
3
public Oscilloscope_Values()
4
{
5
    this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | 
6
                     ControlStyles.AllPaintingInWmPaint | ControlStyles.SupportsTransparentBackColor | 
7
                     ControlStyles.ResizeRedraw | ControlStyles.ContainerControl, true);
8
    this.SizeChanged += new EventHandler(Chart_Resize);
9
    context = BufferedGraphicsManager.Current;
10
    context.MaximumBuffer = new Size(this.Width + 5, this.Height + 5);
11
    grafx = context.Allocate(this.CreateGraphics(), new Rectangle(0, 0, this.Width, this.Height));
12
    grafx.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
13
    grafx.Graphics.FillRectangle(Brushes.Black, 0, 0, this.Width, this.Height);
14
    grafx.Render();
15
    this.Refresh();
16
}

Aber aus irgendeinem Grund funktioniert das nicht. Ich habe beim 
Debugging die Werte ausgelesen und eigentlich sollten diese so 
funktionieren. Exception krieg ich natürlich auch keine...
Hat jemand eine Idee wo sich der Fehler verstecken könnte?

Danke und Gruss

Farin

von Farin (Gast)


Lesenswert?

Ok Leute hat sich geklärt.

Lösung Part 1:
Alles soll raus aus dem Konstruktor was mit Graphics zu tun hat!
Lösung Part 2:
Im OnPaint Event das Rendering vom BufferedGraphics rein!
1
        protected override void OnPaint(PaintEventArgs e)
2
        {
3
            grafx.Render(e.Graphics);
4
        }

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.