كيفية الحصول على موقف الماوس في تعويم أو مضاعفة مع الدقة الدقيقة؟

StackOverflow https://stackoverflow.com/questions/2417425

سؤال

أحتاج إلى اتخاذ موقف النقر بالماوس في تعويم أو مزدوج، كيف يمكنني أن أفعل ذلك؟ في مستمع الماوس، آخذ هذه النقطة مثل هذا،

e.getPoint();

لكن قيم X و Y Points هي عدد صحيح، أحتاج إلى وضع تعويم أو مزدوج. سيكون موضع تقدير أي مساعدة.

تعديل أحتاج إلى دقة دقيقة.

هل كانت مفيدة؟

المحلول

getPoint() يمنحك القيم العدد القيم لأن هذا هو الدقة التي يتم فيها تحديد الإحداثيات. يرى http://java.sun.com/j2se/1.4.2/docs/api/java/awt/point.html..

لماذا تحتاج إلى قيم الفاصلة العائمة؟

تعديل: استجابة لتعليقك، ستحتاج إلى تعيين مواقعك المطلقة على البكسل على الشاشة، باستخدام وظيفة مثل الأرضيات (دائما تقريب) أو جولة (جولة إلى الأقرب إلى الأقرب). لا يحتوي النظام على مفهوم من 0.2 بكسل أو أي شيء من هذا القبيل. يمكنك إما باقتطاع الجزء العشري من العمليات العشرية من الحسابات الخاصة بك، أو الحفاظ على الإحداثيات الدقيقة في جميع الأوقات وتعيينها إلى البكسل حسب الحاجة.

نصائح أخرى

من عند int يجب أن تكون قادرا على الإدلاء double أو float دون أي مشاكل:

double x = e.getPoint().x;
double y = e.getPoint().y;

ومع ذلك هناك طرق تفعل ذلك بالفعل:

double x = e.getPoint().getX();
double y = e.getPoint().getY();

نسيت شيئا ما هنا؟

يرجى ملاحظة أن الدقة لن يكون أعلى - الفأرة لا يمكن إلا أن المفاجئة لحضور بكسل كاملة، وبالتالي عادة ما يكون عدد صحيح. ولكن إذا كنت بحاجة إلى حساب بناء على هذه القيم، فقد تكون تمثيلات النقطة العائمة مفيدة.

لا يمكنك الحصول على نقطة أكثر دقة بعد ذلك getPoint(), ، إرجاع Wich كائن نقطة يحمل فقط اثنين من الأعداد الصحيحة. ما الذي يرغب في تحقيقه مع هذا؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top