Treffertests mit einer Region
Der Zweck des Treffertests besteht darin, zu bestimmen, ob der Cursor über ein bestimmtes Objekt liegt, z. B. ein Symbol oder eine Schaltfläche. Im folgenden Beispiel wird eine plusförmige Region erstellt, indem sie die Union von zwei rechteckigen Regionen bilden. Angenommen, der Variable Punkt enthält die Position des letzten Klicks. Der Code überprüft, ob sich der Punkt in der Plus-Form befindet. Wenn punkt sich in der Region befindet (ein Treffer), wird der Bereich mit einem undurchsichtigen roten Pinsel gefüllt. Andernfalls wird die Region mit einem halbtransparenten roten Pinsel gefüllt.
Point point(60, 10);
// Assume that the variable "point" contains the location
// of the most recent click.
// To simulate a hit, assign (60, 10) to point.
// To simulate a miss, assign (0, 0) to point.
SolidBrush solidBrush(Color());
Region region1(Rect(50, 0, 50, 150));
Region region2(Rect(0, 50, 150, 50));
// Create a plus-shaped region by forming the union of region1 and region2.
// The union replaces region1.
region1.Union(®ion2);
if(region1.IsVisible(point, &graphics))
{
// The point is in the region. Use an opaque brush.
solidBrush.SetColor(Color(255, 255, 0, 0));
}
else
{
// The point is not in the region. Use a semitransparent brush.
solidBrush.SetColor(Color(64, 255, 0, 0));
}
graphics.FillRegion(&solidBrush, ®ion1);