الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

محاكاة خاصية امتصاص اللون في الرسام

بدأه موسى ياسين في 22 أغسطس 2016 · 1 رد · 1,676 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إخواني الأعزاء أريد عمل خاصية امتصاص اللون من بكسل معين من صورة ليتم فيما بعد استخدامه (اللون) يعني أريد الدالة أو الصنف الذي استطيع عمل هذه الخاصية به بلغة الجافا

(الرجاء التوضيح بمثال يسيط).

#2

لاتوجد دالة أو مكون مخصص لهذا الغرض، لكن يمكنك عملها عن طريق تخزين الصورة المعروضة في كائن BufferedImage يمثل الـbackbuffer وعندما تريد رسم شيء ترسمه في تلك الصورة المخزنة أولاً ثم تعرضه على النافذة، عند النقر على النافذة حدد موقع النقر x, y، ثم اقرأ قيمة البكسل المقابل في صورة المخزنة باستخدام BufferedImage#getRGB مثلاً والتي تعطيك مركبات الـrgb، للحصول على المركبات منفردة استخدم الفئة Color:

Color color = new Color(backbuffer.getRGB(x, y));
int r = color.getRed();
int g = color.getGreen();
int b = color.getBlue();

خذ في الإعتبار أنك قد تحتاج للتحويل من إحداثيات الشاشة لإحداثيات الصورة في حال لم تكن متطابقة.

ملاحظة جانبية: إذا كان برنامجك محرر صور، ربما تقرأ عن الـaffine transformations وعن الفئة AffineTransform، قد يكون فهمها صعب في البداية لكنها سيسهل عليك عملك خصوصاً التحويل بين الإحداثيات.

تم تعديل هذه المشاركة بواسطة Mr.B في 24 أغسطس 2016 في 22:54

2▲ 1

مواضيع مشابهة