vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Raster 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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) :-/
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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