Gewusst wie: Trefferüberprüfung mit einem Bereich

Aktualisiert: November 2007

Der Zweck der Trefferüberprüfung besteht darin zu ermitteln, ob sich der Cursor über einem bestimmten Objekt, z. B. einem Symbol oder einer Schaltfläche, befindet.

Beispiel

Im folgenden Beispiel wird ein Bereich in Form eines Pluszeichens gebildet, indem zwei rechteckige Bereiche zusammengeführt werden. Es wird davon ausgegangen, dass in der Variablen point der Punkt angegeben ist, an dem zuletzt geklickt wurde. Anhand des Codes wird überprüft, ob sich point in dem Bereich befindet, der das Pluszeichen bildet. Befindet sich point in diesem Bereich (ein Treffer), wird der Bereich mit einer deckenden roten Pinselfarbe gefüllt. Andernfalls wird der Bereich mit einer halb transparenten Pinselfarbe gefüllt.

Dim point As New Point(60, 10)

' Assume that the variable "point" contains the location of the
' most recent mouse click.
' To simulate a hit, assign (60, 10) to point.
' To simulate a miss, assign (0, 0) to point.

Dim solidBrush As New SolidBrush(Color.Black)
Dim region1 As New [Region](New Rectangle(50, 0, 50, 150))
Dim region2 As New [Region](New Rectangle(0, 50, 150, 50))

' Create a plus-shaped region by forming the union of region1 and region2.
' The union replaces region1.
region1.Union(region2)

If region1.IsVisible(point, e.Graphics) Then
    ' The point is in the region. Use an opaque brush.
    solidBrush.Color = Color.FromArgb(255, 255, 0, 0)
Else
    ' The point is not in the region. Use a semitransparent brush.
    solidBrush.Color = Color.FromArgb(64, 255, 0, 0)
End If

e.Graphics.FillRegion(solidBrush, region1)

Point point = new Point(60, 10);

// Assume that the variable "point" contains the location of the
// most recent mouse click.
// To simulate a hit, assign (60, 10) to point.
// To simulate a miss, assign (0, 0) to point.

SolidBrush solidBrush = new SolidBrush(Color.Black);
Region region1 = new Region(new Rectangle(50, 0, 50, 150));
Region region2 = new Region(new Rectangle(0, 50, 150, 50));

// Create a plus-shaped region by forming the union of region1 and 
// region2.
// The union replaces region1.
region1.Union(region2);

if (region1.IsVisible(point, e.Graphics))
{
    // The point is in the region. Use an opaque brush.
    solidBrush.Color = Color.FromArgb(255, 255, 0, 0);
}
else
{
    // The point is not in the region. Use a semitransparent brush.
    solidBrush.Color = Color.FromArgb(64, 255, 0, 0);
}

e.Graphics.FillRegion(solidBrush, region1);

Kompilieren des Codes

Das vorhergehende Beispiel ist für die Verwendung mit Windows Forms konzipiert und erfordert PaintEventArgs e, einen Parameter von PaintEventHandler.

Siehe auch

Aufgaben

Gewusst wie: Ausschneiden mit einem Bereich

Konzepte

Bereiche in GDI+

Referenz

Region