Rubrik: Grafik & Zeichnen | 15.04.02 |
Rectangle-Funktion Diese Funktion zeichnet ein Rechteck auf ein Device. Dieses Rechteck wird in der aktuellen Vordergrundfarbe des Objektes gezeichnet und mit dem aktuell gewähltem Brush gefüllt. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 12.828 |
Deklaration:
Declare Function Rectangle Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal X1 As Long, _ ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long) As Long
Beschreibung:
Diese Funktion zeichnet ein Rechteck auf ein Device. Dieses Rechteck wird in der aktuellen Vordergrundfarbe des Objektes gezeichnet und mit dem aktuell gewähltem Brush gefüllt.
Parameter:
hdc | Erwartet den Device-Kontext eines Objektes, auf dem das Rechteck gezeichnet werden soll. |
X1 | Erwartet die linke obere Koordinate, an dem das Rechteckplatziert werden soll. |
Y1 | Erwartet die rechte obere Koordinate, an dem das Rechteckplatziert werden soll. |
X2 | Erwartet die linke untere Koordinate, an dem das Rechteckplatziert werden soll. |
Y2 | Erwartet die rechte untere Koordinate, an dem das Rechteckplatziert werden soll. |
Rückgabewert:
Ist die Funktion erfolgreich, so ist "1" die Rückgabe, andernfalls wird "0" zurückgegeben.
Beispiel:
Private Declare Function CreateHatchBrush Lib "gdi32" ( _ ByVal nIndex As Long, _ ByVal crColor As Long) As Long Private Declare Function GetBrushOrgEx Lib "gdi32" ( _ ByVal hDC As Long, _ lpPoint As POINTAPI) As Long Private Declare Function SetBrushOrgEx Lib "gdi32" ( _ ByVal hDC As Long, _ ByVal nXOrg As Long, _ ByVal nYOrg As Long, _ lppt As POINTAPI) As Long Private Declare Function SelectObject Lib "gdi32" ( _ ByVal hDC As Long, _ ByVal hObject As Long) As Long Private Declare Function Rectangle Lib "gdi32" ( _ ByVal hDC As Long, _ ByVal X1 As Long, _ ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Const HS_BDIAGONAL = 3 ' diagonal von links unten nach rechts oben (/) Private Const HS_CROSS = 4 ' Kreuz (+) Private Const HS_DIAGCROSS = 5 ' diagonales Kreuz (x) Private Const HS_FDIAGONAL = 2 ' diagonal von rechts unten nach links oben (\) Private Const HS_HORIZONTAL = 0 ' horizontal (-) Private Const HS_VERTICAL = 1 ' vertikal (|) Private Type POINTAPI x As Long y As Long End Type Private RetVal As Long, hBrushNew As Long, hBrushOld As Long Private OldOrginPt As POINTAPI, NewOrginPt As POINTAPI
' lädt die neuen Brush-Eigenschaften und speichert die alten in Variablen ' die AutoReDraw-Eigenschaft muss False sein !!! Private Sub Form_Load() Me.ScaleMode = vbPixels ' zuerst fragen wir den aktuellen Orgin-Punkt ab, den wir am Ende ' wiederherstellen müssen RetVal = GetBrushOrgEx(Me.hDC, OldOrginPt) ' danach setzen wir den neuen Orign-Punkt NewOrginPt.x = 4 NewOrginPt.y = 4 RetVal = SetBrushOrgEx(Me.hDC, NewOrginPt.x, NewOrginPt.y, NewOrginPt) ' dann erstellen wir uns einen neuen Brush in Blau hBrushNew = CreateHatchBrush(HS_DIAGCROSS, vbBlue) ' nun weisen wir den neuen Brush dem Fernster zu und erhalten dabei den alten hBrushOld = SelectObject(Me.hDC, hBrushNew) End Sub
' zeichnet den neuen Brush innerhalb eines Rechteckes Private Sub Form_Paint() ' Forminhalt löschen Me.Cls ' weil beim maximieren und minimieren die Form den alten Brush immer ' wiederherstellt müssen wir ihn jedes Mal erneut zuweisen um sicher zu stellen, ' dass der gewollte Brush auch das Rechteck ausfüllt SelectObject Me.hDC, hBrushNew ' nun zeichnen wir ein Rechteck in der Mitte der Form RetVal = Rectangle(Me.hDC, Me.ScaleWidth / 3, Me.ScaleHeight / 3, _ Me.ScaleWidth / 3 * 2, Me.ScaleHeight / 3 * 2) End Sub
' erzwingt, dass beim Maximieren ein Form_Paint-Ereignis ausgelöst wird Private Sub Form_Resize() If Me.WindowState = vbmxaximized Then Me.Refresh End If End Sub
' stellt den Originalbrush wieder her Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) ' hier stellen wir den alten Brush und dessen Orginpunkt wieder her DeleteObject SelectObject(Me.hDC, hBrushOld) RetVal = SetBrushOrgEx(Me.hDC, OldOrginPt.x, OldOrginPt.y, OldOrginPt) End Sub