Tipp 0089 Cursorposition über einem Grafics-Objekt
Autor/Einsender:
Datum:
  Thorsten Thiel
24.10.2005
Entwicklungsumgebung:   VB.Net 2003
Framework:   1.1
Wenn man beispielsweise ein Spiel oder ein CAD-Programm schreiben möchte, muss man dem Anwender die Möglichkeit geben, einzelne Grafikobjekte oder Teile auswählen zu können. Als Grundlage dient die Klasse GraphicsPath aus dem Namespace System.Drawing.Drawing2D. Hiermit können komplexe Grafikobjekte verwaltet und deren Beschreibung der Fläche, Koordinaten usw. ermittelt werden. Die Eigenschaft IsVisible gibt Auskunft darüber, ob sich die Maus über einem im GraphicsPath beschriebenen Punkt liegt.
Nur am Rande, wenn doch ein wichtiger Aspekt bei GDI+: Ein Graphics-Objekt, das ja einen Gerätekontext der GDI+-Schnittstelle belegt, sollte unbedingt, wenn es nicht mehr benötigt wird, mit Dispose freigegeben werden. Dispose der Schnittstelle IDisposable sorgt beim Beenden der Applikation für die sofortige Freigabe der durch das Graphics-Objekt belegten Ressourcen.
 
Public Class Form1
  Inherits System.Windows.Forms.Form
Vom Windows Form Designer generierter Code
  Dim grPath As New GraphicsPath

  Private Sub Form1_Paint(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.PaintEventArgs) _
        Handles MyBase.Paint
    grPath = New GraphicsPath
    grPath.AddEllipse(New Rectangle( _
          10, 10, Me.Width - 30, Me.Height - 50))
    e.Graphics.FillEllipse(New SolidBrush(Color.Yellow), _
          grPath.GetBounds)
  End Sub

  Private Sub Form1_MouseMove(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs) _
        Handles MyBase.MouseMove
    If grPath.IsVisible(e.X, e.Y) Then
      Me.Text = "Maus über dem Graphics_Objekt!  Bitte Klicken!"
    Else
      Me.Text = "Maus ist außerhalb!"
    End If
  End Sub

  Private Sub Form1_MouseUp(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.MouseEventArgs) _
        Handles MyBase.MouseUp
    If grPath.IsVisible(e.X, e.Y) Then
      MessageBox.Show(e.X.ToString & " x " & e.Y.ToString, _
          "Koordinaten des KlickPunktes:", MessageBoxButtons.OK, _
          MessageBoxIcon.Information)
    End If
  End Sub

  Private Sub Form1_Resize(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles MyBase.Resize
    Invalidate()
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
    grPath.Dispose()
    MessageBox.Show("Belegte Ressourcen des Graphics-Objektes " & _
          "wurden wieder freigegeben!", _
          "Dispose der Schnittstelle IDisposable", _
          MessageBoxButtons.OK, MessageBoxIcon.Information)
    Me.Close()
  End Sub
End Class
 
Weitere Links zum Thema
Cursor aus Ressource laden

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (6,4 kB) Downloads bisher: [ 414 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Montag, 23. Januar 2012