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-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Dreiecke zeichnen 
Autor: Preisser
Datum: 07.05.11 14:09

Hallo,

dafür gibt es die Klasse System.Drawing.Drawing2D.GraphicsPath. Diese stellt einen grafischen Pfad dar, der beispielsweise durch ein Polygon bestimmt werden kann. Anschließend kann man mit der .IsVisible(Point)-Methode testen, ob ein bestimmter Punkt im Innenbereich des Pfads/Polygons liegt, und man kann das Polygon mit der Graphics.DrawPath()-Methode zeichnen.

Du könntest nun also im MouseMove-Ereignis der Form immer prüfen, ob der Mauszeiger innerhalb eines bestimmten Polygons liegt. Beispiel (erfordert einen Label "Label1"):
Option Strict On
 
Public Class Form1
    Private path As New System.Drawing.Drawing2D.GraphicsPath 'Das Polygon
 
    Public Sub New()
        InitializeComponent()
        'Polygon zum Pfad hingzufügen
        path.AddPolygon(New Point() {New Point(40, 40), New Point(80, 40), New _
          Point(80, 80)})
    End Sub
 
 
    Private Sub Form1_MouseMove(sender As Object, e As _
      System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        Dim b As Boolean = path.IsVisible(e.Location) 'Prüfen ob Mauszeiger im 
        ' Polygon ist
        Label1.Text = If(b, "Ja", "Nein")
    End Sub
 
    Private Sub Form1_Paint(sender As Object, e As _
      System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim g As Graphics = e.Graphics
        g.FillPath(Brushes.Black, path) 'Polygon zeichnen
    End Sub
End Class
Wenn du nun mehrere solcher Dreiecke zeichnen willst, könntest du z.B. eine List(Of GraphicsPath) verwenden, und dann im MouseMove-Ereignis alle Polygone durchlaufen. Falls diese Polygone nur in einem bestimmten Bereich (z.B. PictureBox) auftreten, kann man das im dortigen MouseMove-Ereignis statt in dem der Form machen, um nicht unnötig Vergleiche durchzuführen.

Zu deiner Frage mit der Sytnax: Man kann ein neues Array auch in einem Funktionsaufruf erstellen, mit new Point() {...}. Bei deinem Beispiel:
e.Graphics.FillPolygon(Brushes.Gray, New Point() {New Point(650, ScreenH - 20), _
  New Point(675, ScreenH - 70), New Point(700, ScreenH - 20)})


Beitrag wurde zuletzt am 07.05.11 um 14:18:20 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Dreiecke zeichnen4.831IIINikeIII07.05.11 11:57
Re: Dreiecke zeichnen4.140Preisser07.05.11 13:29
Re: Dreiecke zeichnen4.174IIINikeIII07.05.11 13:47
Re: Dreiecke zeichnen5.200Preisser07.05.11 14:09
Re: Dreiecke zeichnen4.278IIINikeIII07.05.11 14:21
Re: Dreiecke zeichnen4.181Preisser07.05.11 14:46
Re: Dreiecke zeichnen4.059IIINikeIII07.05.11 15:08
Re: Dreiecke zeichnen4.159Preisser07.05.11 15:15
Re: Dreiecke zeichnen4.081IIINikeIII07.05.11 16:33
Re: Dreiecke zeichnen4.074Preisser07.05.11 18:32
Re: Dreiecke zeichnen4.082cookstdu07.05.11 18:06
Re: Dreiecke zeichnen4.078Preisser07.05.11 20:39
Re: Dreiecke zeichnen4.129Manfred X08.05.11 08:58

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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