VB 5/6-Tipp 0370: Komplexe Regions erzeugen
von ActiveVB
Beschreibung
Ein weiteres Beispiel, für die Erstellung von Regions unter Zuhilfenahm der Path-Funktionen .
Schwierigkeitsgrad: | Verwendete API-Aufrufe: BeginPath, BitBlt, EndPath, LineTo, MoveToEx, SelectClipPath, TextOutA (TextOut) | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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