Grafiken Invertieren

Wolfgang Kluge
wolfgang@vbwelt.de

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:
' In älteren Versionen des API-Viewers (genauer gesagt in der Textdatei)
' ist die Funktion fälschlicherweiße im Modul GDI
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.

' Grafik in Picture1 komplett Invertieren
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