vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Rechteck zeichnen 
Autor: Preisser
Datum: 22.02.11 14:21

Hallo,

die DoubleBuffered-Eigenschaft funktioniert wohl nur für das Zeichnen im Paint-Ereignis, das damit gepuffert wird und kein Flackern mehr aufweist. Beim Zeichnen auf ein mit CreateGraphics() geholtes Graphics-Objekt tritt bei mir das Flackern trotz aktivierter DoubleBuffered-Eigenschaft noch auf.

Earny, falls es bei dir auch so ist, versuch mal, zusätzlich zu Manfreds Zeile (Me.DoubleBuffered = True) das Zeichnen nun im Paint-Ereignis zu machen, z.B. so:

    Private Stift As New Pen(Color.Blue, 5)
    Private Pinsel As New SolidBrush(Color.Red)
    Private RechteckTimerTick As Integer = 0
 
 
    Public Sub New()
        InitializeComponent()
        Me.DoubleBuffered = True
    End Sub
 
    Private Sub RechteckTimer_Tick(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles RechteckTimer.Tick
        RechteckTimerTick += 1
        Me.Invalidate() 'neues Paint-Ereignis anfordern
    End Sub
 
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim g As Graphics = e.Graphics
        g.DrawRectangle(Stift, RechteckTimerTick, 50, 200, 100)
        g.FillRectangle(Pinsel, RechteckTimerTick, 50, 200, 100)
    End Sub
Das Me.Invalidate führt dazu, dass ein neues Paint-Ereignis ausgelöst wird (wie gesagt bin ich mir aber nich sicher, ob das in .Net so korrekt ist, hab früher mit VB6 und danach nur mit Java gearbeitet xD). Das Paint-Ereignis wird aber nicht direkt von Invalidate() heraus aufgerufen, sondern es wird nur eine Paint-Nachricht angefordert. Der tatsächliche Aufruf des Paint-Ereignisses kann dann später erfolgen (wenn man beispielsweise die Form minimiert hat, wird es trotz Invalidate() gar nicht aufgerufen; erst sobald man sie wiederherstellt, wird ein neues Zeichnen ausgelöst).

Man kann bei Me.Invalidate() auch den Bereich eingrenzen, der tatsächlich neu gezeichnet werden soll. Vor allem bei gehr großen Zeichenflächen bringt das einen Geschwindigkeitsvorteil, da dann nicht alles komplett neu gezeichnet werden muss, sondern nur der angegebene Bereich.

Beitrag wurde zuletzt am 22.02.11 um 14:23:28 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Rechteck zeichnen5.470Earny21.02.11 18:36
Re: Rechteck zeichnen4.590Preisser21.02.11 19:04
Re: Rechteck zeichnen4.557Earny21.02.11 21:24
Re: Rechteck zeichnen4.937ModeratorFZelle21.02.11 22:45
Re: Rechteck zeichnen4.498Preisser21.02.11 23:29
Re: Rechteck zeichnen4.505Earny22.02.11 09:34
Re: Rechteck zeichnen4.656Manfred X22.02.11 12:47
Re: Rechteck zeichnen4.752Preisser22.02.11 14:21
Re: Rechteck zeichnen4.632Manfred X22.02.11 15:02
Re: Rechteck zeichnen4.537Preisser22.02.11 15:16
Re: Rechteck zeichnen4.654Manfred X22.02.11 15:29
Re: Rechteck zeichnen4.638Earny22.02.11 15:07
Re: Rechteck zeichnen4.518Preisser22.02.11 15:21
Re: Rechteck zeichnen4.518Earny22.02.11 20:02
Re: Rechteck zeichnen4.614Preisser22.02.11 20:09
Re: Rechteck zeichnen4.880Earny22.02.11 20:55
Re: Rechteck zeichnen4.555Preisser22.02.11 21:47
Re: Rechteck zeichnen4.514Earny23.02.11 17:06
Re: Rechteck zeichnen4.648Preisser24.02.11 13:55
Re: Rechteck zeichnen4.505Earny24.02.11 18:47
Re: Rechteck zeichnen4.481ModeratorFZelle22.02.11 15:47
Re: Rechteck zeichnen4.575Earny22.02.11 09:27
Re: Rechteck zeichnen4.542ModeratorFZelle22.02.11 09:46
Re: Rechteck zeichnen4.482Earny22.02.11 14:25

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-2025 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