Nasıl yapılır: Bir Bölgeyle Vuruş Sınaması Kullanma
İsabet testi amacı, imlecin bir simge veya düğme gibi belirli bir nesnenin üzerinde olup olmadığını belirlemektir.
Örnek
Aşağıdaki örnek, iki dikdörtgen bölgenin birleşimini oluşturarak bir artı şekilli bölge oluşturur. Değişkenin point en son tıklama konumunu tuttuğunda olduğunu varsayalım. Kod, point artı şekilli bölgede olup olmadığını denetler. Nokta bölgedeyse (bir vuruş), bölge donuk kırmızı bir fırçayla doldurulur. Aksi takdirde bölge, yarı saydam kırmızı fırça ile doldurulur.
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);
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)
Kod Derleniyor
yukarıdaki örnek, Windows Forms kullanımı için tasarlanmıştır ve PaintEventArgse bir parametresi olan ' ı gerektirir PaintEventHandler .