vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 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

Fortgeschrittene Programmierung
Re: Schnelles Zeichnen von Rechteck in PictureControl 
Autor: Zardoz
Datum: 02.03.04 01:49

Hallo Thoro,
zum Zeichnen von ausgefüllten Rechtecken ohne Rahmen ist die Api
FillRect geeignet. Für die Füllfarbe muß immer ein Brush erstellt
werden. Wenn die Zahl der Farben begrenzt ist und es schnell gehen
soll, ist es sinnvoll alle benötigten Brushs vorab zu erstellen.
Das spart viel Rechenzeit. Hier mal ein Beispiel:
'Benötigt wird eine Picturebox
Option Explicit
 
Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type
 
Private Declare Function FillRect& Lib "user32" (ByVal hdc&, ConstRect As RECT, _
  ByVal HdcBrush&)
Private Declare Function CreateSolidBrush& Lib "gdi32" (ByVal crColor&)
Private Declare Function DeleteObject& Lib "gdi32" (ByVal hObject&)
 
Private Sub Form_Activate()
 
Dim SW&, SH&, P1hdc&, i&, FarbBrush&(4), Block As RECT, T1!, T2!
 
Randomize
Me.ScaleMode = vbPixels
Me.BackColor = RGB(0, 0, 64)
With Picture1
  .ScaleMode = vbPixels
  .AutoRedraw = True
  .BackColor = vbBlack
  SW = .ScaleWidth
  SH = .ScaleHeight
  P1hdc = .hdc
 
  T1 = Timer
  Do: Loop Until Timer > T1
  T1 = Timer
  'benötigte Brushs erstellen
  For i = 0 To 4
    FarbBrush(i) = CreateSolidBrush(Choose(i + 1, vbRed, vbBlue, vbGreen, _
      vbYellow, vbMagenta))
  Next i
  For i = 1 To 1000
    With Block
      .Left = Rnd * (SW - 30) 'X-Position
      .Top = Rnd * (SH - 30) 'Y-Position
      .Right = .Left + 5 + Rnd * 25 'Breite
      .Bottom = .Top + 5 + Rnd * 25 'Höhe
    End With
    'Rechteck zeichnen
    FillRect P1hdc, Block, FarbBrush(Int(Rnd * 5))
  Next i
  'Brushs wieder löschen
  For i = 0 To 4
    Call DeleteObject(FarbBrush(i))
  Next i
  .Refresh
End With
T2 = Timer
MsgBox "Zeit: " & (T2 - T1) & " Sek."
 
End Sub

Gruss,

Zardoz

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Schnelles Zeichnen von Rechteck in PictureControl980Thoro01.03.04 11:57
Re: Schnelles Zeichnen von Rechteck in PictureControl807ModeratorDieter01.03.04 12:59
Re: Schnelles Zeichnen von Rechteck in PictureControl840Thoro01.03.04 15:27
Re: Schnelles Zeichnen von Rechteck in PictureControl784Zardoz01.03.04 18:22
Re: Schnelles Zeichnen von Rechteck in PictureControl678Thoro01.03.04 22:08
Re: Schnelles Zeichnen von Rechteck in PictureControl1.025Zardoz02.03.04 01:49
Re: Schnelles Zeichnen von Rechteck in PictureControl831Thoro02.03.04 23:20

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