![]() |
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
|
|
|
|
|
Windows-Version |
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
|
Download (6,4
kB)
|
Downloads bisher: [ 481 ]
|
|
|