| |
VB.NET - Ein- und UmsteigerRaster auf Panel zeichnen. Flackern verhindern. | | | Autor: Seek1 | Datum: 28.03.13 13:14 |
| Hallo Leute,
Will einen Raster auf ein Panel zeichnen. Das panel kann sich in der Grösse ändern.
Nun habe ich das Problem, wenn ich Controls hinzufüge, und das Panel sich neu erstellt,
es ständig flackert. Bei einem Control ist es egal, aber bei 100 wird es echt nervig.
DoubleBuffer bei der Form habe ich schon.
Hier der aktuelle Code:
Private Sub Panel_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles Panel.Paint
RefreshRaster()
End Sub
Sub RefreshRaster() 'Erneuert den Raster
Dim RasterGrafik As System.Drawing.Graphics
RasterGrafik = Panel.CreateGraphics
Dim Farbe As New System.Drawing.Pen(System.Drawing.Color.Red)
Farbe.Width = 1
For i = 10 To Panel.Width Step 10
RasterGrafik.DrawLine(Farbe, i, 0, i, Panel.Height) 'x1,y1,x2,y2
Next i
For i = 10 To Panel.Height Step 10
RasterGrafik.DrawLine(Farbe, 0, i, Panel.Width, i) 'x1,y1,x2,y2
Next i
End Sub Wie kannich das verhindern?
Dachte mir wie folgt:
Beim Starten wird ein Bitmap für den Hintergrund (aktuelle Grösse) erstellt.
Das Bitmap wird dem Panel als Backgroundimage zugewiesen.
Beim Paint Event wird das Hintergrundbild neu geladen (Überhaupt nötig? Oder Refresh?)
Beim Resize Event, wird die aktuelle Grösse genommen, und ein neues Bitmap angelegt.
Beim Paint Event wird das Hintergrundbild neu geladen (Überhaupt nötig? Oder Refresh?)
usw.
Aber wie kann ich in ein Bitmap zeichnen?
Mit Graphics kann ich das irgendwie nicht.
Dankeschön für eure Hilfe.
Beitrag wurde zuletzt am 28.03.13 um 13:15:12 editiert. | |
Re: Raster auf Panel zeichnen. Flackern verhindern. | | | Autor: GPM | Datum: 28.03.13 14:10 |
| Verwende kein! CreateGraphics und setze DoubleBuffer in einem eigenen Panel.
Beispiel:
Public Class Form1
Dim WithEvents Panel As New MyPanel With {.Dock = DockStyle.Fill, .Parent = _
Me}
Private Sub Panel_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles Panel.Paint
RefreshRaster(e)
End Sub
Sub RefreshRaster(e As PaintEventArgs) 'Erneuert den Raster
Dim RasterGrafik As Graphics = e.Graphics
Dim Farbe As New System.Drawing.Pen(System.Drawing.Color.Red)
Farbe.Width = 1
For i = 10 To Panel.Width Step 10
RasterGrafik.DrawLine(Farbe, i, 0, i, Panel.Height) 'x1,y1,x2,y2
Next i
For i = 10 To Panel.Height Step 10
RasterGrafik.DrawLine(Farbe, 0, i, Panel.Width, i) 'x1,y1,x2,y2
Next i
End Sub
End Class
Public Class MyPanel
Inherits Panel
Public Sub New()
Me.SetStyle(ControlStyles.DoubleBuffer Or ControlStyles.UserPaint Or _
ControlStyles.AllPaintingInWmPaint, True)
End Sub MfG GPM 0 | |
Re: Raster auf Panel zeichnen. Flackern verhindern. | | | Autor: Seek1 | Datum: 28.03.13 17:01 |
| Hat funktioniert :-D Dankeschön.
Darauf hätte ich selber komen können (eigentlich müssen) :-/ | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|