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:46

Hallo,

Zu 1.: Ich denke, das kann man mittels eines System.Drawing.Region-Objekts machen, indem man einfach eine Intersektion (Schnitt) zweier Paths durchführt und anschließend prüft, ob das Ergebnis leer ist.
Hier auch mal ein Beispiel:
Option Strict On
Public Class Form1
    Private dreieck As New System.Drawing.Drawing2D.GraphicsPath 'Dreieck
    Private rechteck As New System.Drawing.Drawing2D.GraphicsPath 'Rechteck
    Private rechteckRegion As System.Drawing.Region 'Region zur Bildung des 
    ' Schnitts
 
    Public Sub New()
        InitializeComponent()
        Me.DoubleBuffered = True
        'Rechteck erstellen
        rechteck.AddRectangle(New Rectangle(New Point(100, 100), New Size(70, _
          60)))
        rechteckRegion = New System.Drawing.Region(rechteck)
    End Sub
 
 
    Private Sub Form1_MouseMove(sender As Object, e As _
      System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        Dim loc As Point = e.Location
        dreieck.Reset() 'Neues Dreieck an der aktuellen Mausposition
        dreieck.AddPolygon(New Point() {New Point(loc.X - 20, loc.Y - 10), New _
          Point(loc.X + 20, loc.Y - 10), New Point(loc.X + 20, loc.Y + 30)})
        Me.Invalidate() ' Repaint-Ereignis auslösen
 
        Dim regIntersect As New System.Drawing.Region(dreieck) 'Region für das 
        ' Dreieck
        regIntersect.Intersect(rechteck)
        Label1.Text = If(regIntersect.IsEmpty(Me.CreateGraphics()), "Nein", _
          "Ja") 'Ist der Schnitt leer?
 
    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, dreieck)
        g.DrawPath(Pens.Blue, rechteck)
    End Sub
 
End Class
Das Dreieck folgt immer dem Mauszeiger, und wenn das Dreieck das Rechteck berührt bzw. überlappt, zeigt der Label1 "Ja" an.

2. Ich glaub nicht, dass das geht, und ich glaub nicht, dass man sowas auch benötigen würde.

3. Wie meinst du das? "Object" ist die Basisklasse aller anderen Klassen, also kann eine mit Object deklarierte Variable beliebige Objekte aufnehmen, allerdings bietet sie nur die allgemeinen Methoden, die eben Object hat, außer man castet sie vorher in die entsprechende Unterklasse.

Wenn du in deinem Box-Array also Labels speichern willst, sollte die Deklaration nicht "Dim Box() as Object", sondern "Dim Box() as Label" lauten.

Ich versteh allerdings nicht, was du mit der While-Schleife unten meinst. Könntest du das noch etwas genauer beschreiben?

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

 ThemaViews  AutorDatum
Dreiecke zeichnen4.829IIINikeIII07.05.11 11:57
Re: Dreiecke zeichnen4.139Preisser07.05.11 13:29
Re: Dreiecke zeichnen4.174IIINikeIII07.05.11 13:47
Re: Dreiecke zeichnen5.199Preisser07.05.11 14:09
Re: Dreiecke zeichnen4.277IIINikeIII07.05.11 14:21
Re: Dreiecke zeichnen4.181Preisser07.05.11 14:46
Re: Dreiecke zeichnen4.058IIINikeIII07.05.11 15:08
Re: Dreiecke zeichnen4.158Preisser07.05.11 15:15
Re: Dreiecke zeichnen4.081IIINikeIII07.05.11 16:33
Re: Dreiecke zeichnen4.073Preisser07.05.11 18:32
Re: Dreiecke zeichnen4.082cookstdu07.05.11 18:06
Re: Dreiecke zeichnen4.078Preisser07.05.11 20:39
Re: Dreiecke zeichnen4.128Manfred 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