vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Grafik & Zeichnen22.03.05
CombineRgn-Funktion

Diese Funktion kombiniert zwei Regionen zu ändert einer dritten.

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  8.884 

Deklaration:

Declare Function CombineRgn Lib "gdi32.dll" ( _
 ByVal hDestRgn As Long, _
 ByVal hSrcRgn1 As Long, _
 ByVal hSrcRgn2 As Long, _
 ByVal nCombineMode As Long) As Long

Beschreibung:
Diese Funktion kombiniert zwei Regionen zu ändert einer dritten.

Parameter:
hDestRgnErwartet das Handle einer Region in dem das Ergebnis der Kombination geändert wird.
hSrcRgn1Erwartet das Handle einer der Regionen diekombiniert werden sollen.
hSrcRgn2Erwartet das Handle einer der Regionen diekombiniert werden sollen.
nCombineModeErwartet eine der "nCombineMode"-Konstantendie die Kombinationsart beschreibt.

nCombineMode Konstanten:

Const RGN_AND = 1
' Die kombinierte Region soll eine überlappende Region der beiden Quellregionen sein
Const RGN_OR = 2
' Die kombinierte Region soll der Gesamtbereich der beiden Regionen inklusive überlappendem Bereich sein
Const RGN_XOR = 3
' Die kombinierte Region soll der Gesamtbereich der beiden Regionen exklusive überlappendem Bereich sein
Const RGN_DIFF = 4
' Die kombinierte Region soll der Gesamtbereich der hSrcRgn1 sein, inklusive des Bereiches der Region die von hSrcRgn2 überlappt wird
Const RGN_COPY = 5
' Die kombinierte Region soll der Gesamtbereich der hSrcRgn2 sein, inklusive des Bereiches der Region die von hSrcRgn1 überlappt wird

Rückgabewert:
Ist die Funktion erfolgreich, gibt sie eine der Rückgabe-Konstanten zurück, die beschreibtob und wie die kombinierte Region erstellt wurde.


Rückgabekonstanten:
Const ERROR = 0
' Ein Fehler ist aufgetreten
Const NULLREGION = 1
' Die kombinierte Region ist leer
Const SIMPLEREGION = 2
' Die kombinierte Region ist eine rechteckige (simple) Region
Const COMPLEXREGION = 3
' Die kombinierte Region ist eine komplexe Region

Beispiel:

Private Declare Function CreateEllipticRgn Lib "gdi32.dll" ( _
  ByVal X1 As Long, _
  ByVal Y1 As Long, _
  ByVal X2 As Long, _
  ByVal Y2 As Long) As Long
Private Declare Function DeleteObject Lib "gdi32.dll" ( _
  ByVal hObject As Long) As Long
Private Declare Function CreateRectRgn Lib "gdi32.dll" ( _
  ByVal X1 As Long, _
   ByVal Y1 As Long, _
  ByVal X2 As Long, _
  ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" ( _
  ByVal hDestRgn As Long, _
   ByVal hSrcRgn1 As Long, _
  ByVal hSrcRgn2 As Long, _
  ByVal nCombineMode As Long)  As Long
Private Declare Function FrameRgn Lib "gdi32.dll" ( _
  ByVal hdc As Long, _
  ByVal hRgn As Long, _
  ByVal hBrush As Long, _
  ByVal nWidth As Long, _
  ByVal nHeight As Long) As Long
Private Declare Function CreateHatchBrush Lib "gdi32.dll" ( _
  ByVal nIndex As Long, _
  ByVal crColor As Long) As Long
Private Declare Function FillRgn Lib "gdi32.dll" ( _
  ByVal hdc As Long, _
  ByVal hRgn As Long, _
  ByVal hBrush As Long) As Long
Private Declare Function InvertRgn Lib "gdi32.dll" ( _
  ByVal hdc As Long, _
   ByVal hRgn As Long) As Long
 
' CombineRgn nCombineMode-Konstanten
Private Const RGN_AND = 1 ' Die kombinierte Region soll eine überlappende  _
' Region der beiden Quellregionen sein
Private Const RGN_OR = 2 ' Die kombinierte Region soll der Gesamtbereich der  _
' beiden Regionen inklusive überlappendem Bereich sein
Private Const RGN_XOR = 3 ' Die kombinierte Region soll der Gesamtbereich  _
' der beiden Regionen exklusive überlappendem Bereich sein
Private Const RGN_DIFF = 4 ' Die kombinierte Region soll der Gesamtbereich  _
' der hSrcRgn1 sein, inklusive des Bereiches der Region die von hSrcRgn2 überlappt wird
Private Const RGN_COPY = 5 ' Die kombinierte Region soll der Gesamtbereich  _
' der hSrcRgn2 sein, inklusive des Bereiches der Region die von hSrcRgn1 überlappt wird
 
' CombineRgn Rückgabe-Konstanten
Private Const ERROR = 0 ' Ein Fehler ist aufgetreten
Private Const NULLREGION = 1 ' Die kombinierte Region ist leer
Private Const SIMPLEREGION = 2 ' Die kombinierte Region ist eine rechteckige (simple) Region
Private Const COMPLEXREGION = 3 ' Die kombinierte Region ist eine komplexe Region 
 
' CreateHatchBrush nIndex-Konstanten
Private Const HS_BDIAGONAL = 3
Private Const HS_CROSS = 4
Private Const HS_DIAGCROSS = 5
Private Const HS_FDIAGONAL = 2
Private Const HS_HORIZONTAL = 0
Private Const HS_VERTICAL = 1
 
Private hRgn1 As Long, hRgn2 As Long, hRgn3 As Long
Private hBrush As Long
' 2 Regionen Kombinieren und Invertieren
Private Sub Form_Load()
  Dim Retval As Long
 
  ' Autoredraw auf True stellen
  Me.AutoRedraw = True
 
  ' Brush erstellen
  hBrush = CreateHatchBrush(HS_DIAGCROSS, RGB(0, 255, 0))
 
  ' Elliptische Region erstellen
  hRgn1 = CreateEllipticRgn(20, 30, 150, 110)  ' bounding rectangle '(20,30)-(150,110) 
 
  ' daneben eine rechteckige Region erstellen
  hRgn2 = CreateRectRgn(150, 30, 200, 110)
 
  ' Eine dritte "leere" Region erstellen
  hRgn3 = CreateRectRgn(0, 0, 0, 0)
 
  ' Kombinieren der beiden Regionen (Körper) zu einer Region
  CombineRgn hRgn3, hRgn1, hRgn2, RGN_XOR
 
  ' Kombinierte Region mit dem Brush füllen
  FillRgn Me.hdc, hRgn3, hBrush
 
  ' Invertieren der kombinierten Region
  InvertRgn Me.hdc, hRgn3
 
  ' Rahmen mit dem Pen um die kombinierte Region zeichnen
  FrameRgn Me.hdc, hRgn3, hBrush, 5, 10
End Sub
' Ressourcen freigeben
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  Dim Retval As Long
 
  ' Löschen des Brushs
  DeleteObject hBrush
 
  ' Löschen der erstellten Regionen
  DeleteObject hRgn1
  DeleteObject hRgn2
  DeleteObject hRgn3
End Sub

Diese Seite wurde bereits 8.884 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2024 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