Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0370: Komplexe Regions erzeugen

 von 

Beschreibung 

Ein weiteres Beispiel, für die Erstellung von Regions unter Zuhilfenahm der Path-Funktionen .

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

BeginPath, BitBlt, EndPath, LineTo, MoveToEx, SelectClipPath, TextOutA (TextOut)

Download:

Download des Beispielprojektes [10,73 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Bildfeld-Steuerelement "Picture1"
' Steuerelement: Bildfeld-Steuerelement "Picture2"
' Steuerelement: Schaltfläche "Command1"

Option Explicit

Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
        
Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long

Private Declare Sub TextOut Lib "gdi32" Alias "TextOutA" (ByVal _
        hdc As Long, ByVal x As Long, ByVal y As Long, ByVal _
        lpString As String, ByVal nCount As Long)
        
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
        ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, _
        ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, _
        ByVal ySrc As Long, ByVal dwRop As Long) As Long
        
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As _
        Long, ByVal x As Long, ByVal y As Long, lpPoint As Any) _
        As Long
        
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, _
        ByVal x As Long, ByVal y As Long) As Long

Private Declare Function SelectClipPath Lib "gdi32" (ByVal hdc _
        As Long, ByVal iMode As Long) As Long

Private Const SRCCOPY As Long = &HCC0020
Private Const RGN_COPY As Long = &H5&

Private Sub Form_Load()
    Picture2.Picture = LoadPicture(App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & "Pic.jpg")
    Picture1.AutoRedraw = True
    Picture1.ScaleMode = vbPixels
    Picture1.Refresh
End Sub

Private Sub Form_Paint()
    Dim Txt1 As String, Txt2 As String, Txt3 As String
    Dim x As Long, y As Long
  
    Txt1 = "Holla,wattn ditte?"
    Txt2 = "Ditte is Clipping"
    Txt3 = "Jut, weeß ick nu"
    
    With Picture1
        Call BeginPath(.hdc)
        Call TextOut(.hdc, 5, 5, Txt1, Len(Txt1))
        Call EndPath(.hdc)
        Call SelectClipPath(.hdc, RGN_COPY)
        Call BitBlt(.hdc, 5, 5, Picture2.ScaleWidth, Picture2.ScaleHeight, _
            Picture2.hdc, 0, 0, SRCCOPY)
      
        Call BeginPath(.hdc)
        Call TextOut(.hdc, 20, 45, Txt2, Len(Txt2))
        Call EndPath(.hdc)
        Call SelectClipPath(.hdc, RGN_COPY)
        .ForeColor = RGB(0, 0, 255)
        For y = 0 To .ScaleHeight Step 2
            Call MoveToEx(.hdc, 0, y, 0&)
            Call LineTo(.hdc, .ScaleWidth, y)
        Next y
      
        Call BeginPath(.hdc)
        Call TextOut(.hdc, 35, 85, Txt3, Len(Txt3))
        Call EndPath(.hdc)
        Call SelectClipPath(.hdc, RGN_COPY)
        .ForeColor = RGB(128, 0, 0)
        For x = 0 To .ScaleWidth Step 4
            Call MoveToEx(.hdc, x, 0, 0&)
            Call LineTo(.hdc, x, .ScaleHeight)
        Next x
    End With
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Benny am 18.04.2002 um 11:24

Wie kann ich ein Regions drucken? und zwar unter Win98!? Im NT-Bereich sprich win2000 und XP funktionierts mit:
BeginPath Printer.hDC
Arc Printer.hDC, x1, y1, x1 + icoGrMap.X , y1 + icoGrMap.Y , x1, y1, x1, y1
EndPath Printer.hDC
SelectClipPath Printer.hDC, RGN_COPY
Printer.PaintPicture bild, x1, y1, icoGrMap.X , icoGrMap.Y
unter Me und 98 functionierts jedoch nicht. Kennt ihr ne methode?
Benjamin Marsoner

Kommentar von Jens am 29.01.2001 um 18:53

Kann mir auch noch jemand sagen, wie ich bestimmte Bereiche einer Landkarte einfärbt? (siehe Gebietsänderungen bei Risiko!)

Kommentar von Guido Schroeter am 25.01.2001 um 11:07

Wie kann ich denn eine Landkarte erstellen und in dieser Landkarte bestimmte Bereiche bearbeiten, d.h. Farben von Z.B. Bundesland Bayern ändern oder einen Text einfügen?

Kommentar von Guido Schroeter am 25.01.2001 um 11:04

Wie kann ich denn geographische Analysen realisieren? Ich muß dafür Daten nicht in einem Diagramm anzeigen lassen sondern in einer Landkarte. Es sollen dann z.b. Bayern rot gefärbt werden.
Wie kann ich eine Landkarte erstellen, in welcher ich bestimmte Bereiche einzeln ansprechen und Farben ändern oder einen Text hinzufügen kann?
Bitte geben Sie mir einen Tip wie ich das beewerkstelligen kann.
Vielen Dank im voraus.
Guido Schroeter