จะรู้ได้อย่างไรว่าจุดที่คลิกเมาส์เป็นของสี่เหลี่ยมหรือไม่? [ปิด]

จะทราบพิกัดของจุดในสี่เหลี่ยมที่วาดโดยใช้กลไกกราฟิกได้อย่างไร ฉันต้องการจดจำสี่เหลี่ยมตามพิกัดหากพิกัดการคลิกเมาส์เป็นของสี่เหลี่ยม ฉันต้องการระบุสี่เหลี่ยมนั้น

แก้ไขแล้ว ฉันวาดรูปสี่เหลี่ยมหลายอันแล้ว ฉันต้องการที่จะจดจำสี่เหลี่ยมนั้นจากการคลิกเมาส์


person NoviceToDotNet    schedule 20.09.2013    source แหล่งที่มา
comment
คุณต้องจัดเก็บรายการสี่เหลี่ยมทั้งหมดที่คุณวาด รวมถึงตำแหน่งและขนาด จากนั้นเมื่อคลิกเมาส์ คุณจะต้องทำการตรวจจับการชนกันแบบจุดต่อกล่องง่ายๆ   -  person musefan    schedule 20.09.2013
comment
@Erno de Weerd ฉันไม่เข้าใจสิ่งนี้   -  person NoviceToDotNet    schedule 20.09.2013
comment
@musefan คุณช่วยกรุณาแจ้งให้เราทราบในแง่การเขียนโค้ดได้ไหม   -  person NoviceToDotNet    schedule 20.09.2013
comment
@NoviceToDotNet: ขออภัย นั่นเป็นงานมากเกินไป ลองด้วยตัวเองก่อน คุณสามารถรับจุดเมาส์สัมพันธ์กับการควบคุมเมื่อคลิก เช่นนี้ จากนั้นวนซ้ำรายการสี่เหลี่ยมของคุณและตรวจสอบว่าจุดนั้นอยู่ภายในขอบเขตของสี่เหลี่ยมหรือไม่   -  person musefan    schedule 20.09.2013


คำตอบ (1)


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

แล้ว

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();

คุณต้องเก็บสี่เหลี่ยมทั้งหมดไว้ในรายการ (สี่เหลี่ยม)

person Emond Erno    schedule 20.09.2013
comment
LastOrDefault() --› rectangles.Select(rectangle=›rectangle.Contains(point)).LastOrDefault() จะเป็น Rectangle บนสุดหรือ default(RectF ) ถ้าสี่เหลี่ยมถูกวาดจากด้านหลังไปด้านหน้า - person Jeroen van Langen; 20.09.2013
comment
ฉันสามารถผ่านจุดเช่นนี้ได้ไหม Text = String.Format(X: {0}; Y: {1}, e.X, e.Y); - person NoviceToDotNet; 20.09.2013
comment
ทำให้ point เป็นแบบนี้: var point = new PointF(e.X, e.Y); - person Emond Erno; 20.09.2013