การตรวจจับตัวชี้เมาส์บน Path2D

ฉันได้สร้าง Path2D ที่แสดงถึง รูปร่างไม่ปิดประกอบด้วยเส้นตรง:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันต้องการที่จะตรวจจับได้เมื่อมีการคลิกเมาส์และตัวชี้เมาส์อยู่ใกล้กับเส้นทาง (ภายในไม่กี่พิกเซล) การใช้ contains วิธีการไม่ทำงานเนื่องจากอัลกอริทึมถือว่ารูปร่างที่ปิดเป็นแบบปิดโดยปริยาย (เช่น โดยการวาดเส้นตรงระหว่างจุดเริ่มต้นและจุดสิ้นสุด)

ไม่มีใครรู้ถึงกลไกอื่นในการบรรลุเป้าหมายนี้หรือไม่


person Adamski    schedule 22.08.2012    source แหล่งที่มา


คำตอบ (1)


  1. สร้าง BasicStroke (ความกว้างจะควบคุมระยะพิกเซลของคุณ)
  2. อย่าวาดด้วยมัน เพียงใช้เมธอด createStrokedShape เพื่อสร้างรูปร่างที่สองจากรูปร่างของคุณเท่านั้น รูปร่างที่สองนี้อธิบายโครงร่างของรูปร่างที่จะถูกเติมหากคุณวาดรูปร่างแรกด้วย BasicStroke
  3. ใช้วิธีการบรรจุของรูปร่างที่สองนี้

จากเอกสารประกอบ Stroke.createStrokedShape API:

ส่งกลับรูปร่างเค้าร่างซึ่งล้อมรอบพื้นที่ที่ควรทาสีเมื่อมีการลากรูปร่างตามกฎที่กำหนดโดยวัตถุที่ใช้อินเทอร์เฟซ Stroke

person lbalazscs    schedule 22.08.2012
comment
สุดยอด! - ขอบคุณสำหรับสิ่งนี้. น่าเสียดายที่ฉันเพิ่งสร้างรูทีนเพื่อรวมพื้นที่จากสี่เหลี่ยมบางๆ หลายอัน แต่ตอนนี้สามารถแทนที่โค้ด 20-30 บรรทัดนั้นด้วย: cachedPathBoundary = new BasicStroke(PATH_BOUNDARY_THICKNESS).createStrokedShape(path); - person Adamski; 22.08.2012