Bagaimana cara mengetahui apakah titik yang diklik mouse termasuk dalam persegi panjang atau bukan? [tertutup]

Bagaimana cara mengetahui koordinat suatu titik pada persegi panjang yang digambar menggunakan mekanisme grafik? Saya ingin mengenali persegi panjang berdasarkan koordinatnya. Jika koordinat klik mouse milik persegi panjang, saya ingin mengidentifikasi persegi panjang itu.

DIEDIT Saya telah menggambar beberapa persegi panjang, saya ingin mengenali persegi panjang berdasarkan klik mouse.


person NoviceToDotNet    schedule 20.09.2013    source sumber
comment
Anda perlu menyimpan daftar semua persegi panjang yang Anda gambar, termasuk lokasi dan ukurannya, dan kemudian dengan klik mouse Anda perlu melakukan beberapa deteksi tabrakan point-to-box sederhana   -  person musefan    schedule 20.09.2013
comment
@Erno de Weerd, saya tidak mengerti.   -  person NoviceToDotNet    schedule 20.09.2013
comment
@musefan tolong beri tahu saya dalam istilah pengkodean.   -  person NoviceToDotNet    schedule 20.09.2013
comment
@NoviceToDotNet: Maaf, itu terlalu banyak pekerjaan. Cobalah sendiri dulu. Anda bisa mendapatkan titik tetikus relatif terhadap kontrol saat diklik, seperti ini. Kemudian ulangi daftar persegi panjang Anda dan periksa apakah titik tersebut berada dalam batas persegi panjang   -  person musefan    schedule 20.09.2013


Jawaban (1)


var point = new PointF(e.X, e.Y);

kemudian

var rectanglesContainingPoint = new List<RectF>();
foreach(var rectangle in rectangles)
{
    if(rectangle.Contains(point))
    {
        rectanglesContainingPoint.Add(rectangle);
    }
}

or

var rectanglesContainingPoint = 
     rectangles.Select(rectangle=>rectangle.Contains(point)).ToList();

Anda harus menyimpan semua persegi panjang dalam daftar (persegi panjang).

person Emond Erno    schedule 20.09.2013
comment
LastOrDefault() --› rectangles.Select(rectangle=›rectangle.Contains(point)).LastOrDefault() Akan menjadi Rectangle atau default(RectF) paling atas ) jika persegi panjang digambar dari belakang ke depan. - person Jeroen van Langen; 20.09.2013
comment
bisakah saya memberikan poin seperti ini Text = String.Format(X: {0}; Y: {1}, e.X, e.Y); - person NoviceToDotNet; 20.09.2013
comment
Buat point seperti ini: var point = new PointF(e.X, e.Y); - person Emond Erno; 20.09.2013