Deteksi penunjuk tetikus melalui Path2D

Saya telah membuat Path2D yang mewakili bangun datar yang terdiri dari garis-garis lurus:

masukkan deskripsi gambar di sini

Saya ingin dapat mendeteksi ketika mouse diklik dan penunjuk tetikus berada di dekat (dalam beberapa piksel) jalur. Menggunakan Metode contains tidak berfungsi karena algoritme memperlakukan bentuk yang tidak tertutup sebagai tertutup secara implisit (yaitu dengan menggambar garis lurus antara titik awal dan titik akhir).

Adakah yang tahu mekanisme lain untuk mencapai hal ini?


person Adamski    schedule 22.08.2012    source sumber


Jawaban (1)


  1. Buat BasicStroke (lebar mengontrol toleransi jarak piksel Anda)
  2. Jangan menggambar dengan itu, hanya gunakan metode createStrokedShape untuk membuat bentuk kedua dari bentuk Anda. Bentuk kedua ini menjelaskan garis besar bentuk yang akan diisi jika Anda menggambar bentuk pertama dengan BasicStroke.
  3. Gunakan metode berisi bentuk kedua ini

Dari dokumentasi API Stroke.createStrokedShape :

Mengembalikan Bentuk garis luar yang melingkupi area yang harus dicat ketika Bentuk tersebut digores sesuai dengan aturan yang ditentukan oleh objek yang mengimplementasikan antarmuka Goresan.

person lbalazscs    schedule 22.08.2012
comment
Luar biasa! - Terima kasih untuk ini. Sayangnya saya baru saja membuat rutinitas untuk menggabungkan Area dari beberapa persegi panjang tipis tetapi sekarang telah berhasil mengganti 20-30 baris kode tersebut dengan: cachedPathBoundary = new BasicStroke(PATH_BOUNDARY_THICKNESS).createStrokedShape(path); - person Adamski; 22.08.2012