Nasıl yapılır: Bir Bölgeyle Vuruş Sınaması Kullanma
Makale
İsabet testinin amacı, imlecin 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 artı şeklinde bir bölge oluşturur. Değişkenin point en son tıklamanın konumunu barındırdığını varsayalım. Kod, artı şeklindeki bölgede olup olmadığını point denetler. Nokta bölgedeyse (isabet), bölge opak kırmızı bir fırçayla doldurulur. Aksi takdirde, bölge yarı saydam kırmızı bir fırça ile doldurulur.
C#
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 ile kullanılmak üzere tasarlanmıştır ve parametresi PaintEventArgsolan öğesini gerektirir.ePaintEventHandler
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
.NET Desktop feedback geri bildirimi
.NET Desktop feedback, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Visual Studio'daki test araçlarını kullanarak C# uygulamalarınızı test etmeye başlayın. Test yazmayı, Test Gezgini'ni kullanmayı, test paketleri oluşturmayı ve kod yazmak için kırmızı, yeşil, yeniden düzenleme desenini uygulamayı öğrenin.
Tek bir çokgeni temel alan bir klip bölgesi oluşturan bir kod örneği kullanarak System.Drawing.Graphics sınıfının klip bölgesi özelliğini kullanmayı öğrenin.