سؤال

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

لقد سمعت عن OpenGL ، لكنني لم أتطرق إليها مطلقًا ، وأردت بعض التعليقات حول ما إذا كان ذلك (أو أي شيء آخر) سيكون نهجًا أفضل قبل استثمار الوقت فيه.

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

المحلول

بالنسبة للصور الثابتة ، أرسمها إلى bufferedimage (BI) ثم ارسم ذلك عبر Graphics2D. أبقى منطقية تخبرني ما إذا كانت BI محدثة. بهذه الطريقة ، أتحمل تكلفة الطلاء باهظة الثمن مرة واحدة. إذا كنت ترغب في الحصول على خيال ، فيمكنك توسيع نطاق BI للتعامل مع تغيير حجم بسيط. من أجل تغيير حجم كبير ، ربما ترغب في إعادة رسم BI حتى لا تقدم القطع الأثرية. من المفيد أيضًا تراكب البيانات (مثل الشعر المتقاطع ، والقيمة الموجودة تحت المؤشر ، إلخ) حيث تقوم فقط برسم BI والبيانات.

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