Grafiken Invertieren
Kein Plan warum, aber man hat mich eben gefragt.
Und so hat sich diese Funktion eben auch hierher verirrt (ich bin eben der Meinung ein "richtiges" Grafikprogramm ist nur in C++ zu bewerkstelligen, aber nur wegen der leichteren Speicherverwaltung, Pointer-to-Pointer, usw., nicht unbedingt wegen der Leistungsfähigkeit...)
Naja,....schlecht kann es ja nicht sein, sowas hier abzubilden,....Und wieder mal geht nichts ohne Windows-API.
Deklaration:
Private Declare Function InvertRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Aufgerufen wird das ganze mit dem Device Context der PictureBox,...oder sonstwas, das diese Eigenschaft vorweisen kann(Forms, Printer, PictureBox) und der RECT-Struktur.
Wie bei allen API-Aufrufen mit irgendwelchen Koordinaten, ist auch diese auf Pixel beschränkt, daher muß vorher die ScaleMode-Eigenschaft auf 3 - Pixel gestellt, oder die Maße umgerechnet werden.
Es können natürlich beliebige Teile der Grafik, oder die gesamte Grafik Invertiert werden.
Dim InvRECT As RECT
Picture1.ScaleMode = 3
With PiRECT
.Top = Picture1.ScaleTop
.Bottom = Picture1.ScaleHeight - Picture1.ScaleTop
.Left = Picture1.ScaleLeft
.Rigth = Picture1.ScaleWidth - Picture1.ScaleLeft
End With
InvertRect Picture1.hdc, InvRECT