يتأرجح:كيف تقرأ المعلومات الرسومية الموجودة أسفل المكون؟
-
22-08-2019 - |
سؤال
كيف يمكنني "قراءة" المعلومات الرسومية تحت أحد المكونات(دعنا نقول كما صورة مخزنة)?
أرغب في جعل هذا المكون نصف ترانويس (تم القيام به بالفعل) وتطبيق التأثيرات الرسومية على الأشياء الأساسية ، مثل طمس جميع العناصر تحت هذا المكون (ولكن ليس المكون نفسه).
من المحتمل أن يكون أسلوبي خاطئًا:
أحاول الحصول على معلومات رسومية من مثيل Graphics2D المقدم لي في طلاء(...) الطريقة، ولكنها فارغة، أليس كذلك؟
المحلول
سؤال:هل المكون الخاص بك هو المستوى الأعلى (على سبيل المثال، هل تريد معرفة ما هو موجود على سطح المكتب ضمن إطار JFrame)، أم أنك تريد فقط معرفة المكونات الموجودة في طبقات أسفل المكون؟
إذا كانت 1)، فمن السهل التقاط لقطة شاشة باستخدام الملف java.awt.Robot
طريقة createScreenCapture(Rectangle)
;ال Rectangle
يجب أن تكون حدود نافذتك في هذه الحالة.
إذا كان رقم 2)، فإذا كان لديك إشارة إلى المكون الموجود أسفله، فيمكنك الاستفادة من حقيقة ذلك paint(Graphics)
لا يهتم أين Graphics
كائن جاء من.يمكنك إنشاء BufferedImage
, ، يتصل createGraphics()
(في حالة أ Graphics2D
المتوقع)، وتمرير النتيجة إلى paint(Graphics)
طريقة المكون الذي تريد التقاطه.
لاحظ أنه إذا كان المكون عبارة عن حاوية، فسوف يقوم بطلاء أبنائه أيضًا؛قد يكون هذا أو لا يكون ما تريد.