تأثير العدسة

لقد قمت بإنشاء تأثير العدسة لتوفير ميزة جذابة لقسم "حول" في تطبيق تشفير الملفات

الوصف

تتيح المكتبة تطبيق تأثير العدسة على Java Swing JPanel

بالنسبة للإصدار v1.2 ، قمت بإنشاء تطبيق تجريبي يعرض العدسة على إطار JFrame ، والذي يمكن سحبه عبر الشاشة بأكملها

وصف الكود

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

ثم يتم تطبيق مرشح تجانس Gaussian بحجم 3x3

ويندوز

تأثير العدسة v1.1 (2015)

تحميل

تأثير العدسة v1.2 (2018)

تحميل

تأثير العدسة v1.3 (2019)

مشاهدة vdeo
تحميل

إصدارات الإصدار

image

كان تأثير عدسة التطبيق الصغيرة هو المنتج الثانوي لقضاء عطلة الربيع دون أي خطط.

في ذلك الوقت ، كنت أنهي برمجة الإصدار الأول من برنامج التشفير File Encoder Application ، وكنت بحاجة إلى شيء جذاب لـ حول...

الفكرة الأصلية ليست فكرتي ، لكنني نفذتها استنادًا إلى تأثير رأيته في أحد تلك العروض التوضيحية المميزة دوس.

قررت أن أغلف التأثير داخل Java Swing JPanel لمشروعي.

يمكن تكبير كل شيء داخل اللوحة باستخدام عدسة مكبرة موضوعة في الإحداثيات التي اخترتها.

ومن الصعب بوجه خاص ضمان ألا يؤثر تحديث مكونات النص، وخصوصا عند تعديل موقع النص المختار، تأثيرا سلبيا على المظهر المرئي.

عند إنشاء LensJPanel ، يتم تطبيق محتوى JPanel على العنصر الذي سيخضع لتأثير التكبير. يمكنك تحديد نصف قطر العدسة المكبرة وما إذا كانت ستقوم بتكبير المحتوى أو تقليله.

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


التفسير مربك بعض الشيء ، ولكن إذا كنت مهتمًا بمعرفة المزيد عن الموضوع ، فلا تتردد في الاتصال بي.

آمل أن يجده شخص ما مفيدًا :-)

image

يتميز الإصدار الجديد من التطبيق بنافذة رسومية دائرية مع عدسة متحركة يمكن التحكم فيها عن طريق النقر والسحب بالماوس.
يمكنك الخروج من التطبيق عن طريق الضغط على ESC.

هناك بعض المشاكل الواضحة:

  • من المستحيل تحديث الخلفية المتضخمة بشكل متكرر لأنه ، لأخذ لقطة شاشة ، يجب عليك ضبط النافذة على أنها شفافة ، مما يسبب وميضًا مزعجًا.
  • الصورة منقطة تمامًا ، خاصة في الجزء المركزي من العدسة المكبرة.
image

يعالج الإصدار الجديد من التطبيق خللًا في الشفافية حدث على أنظمة تشغيل Mac و Linux.

يتناول الإصدار الأخير أيضًا مشكلة البكسل الموجودة في الإصدارات السابقة.

يتم تحقيق ذلك من خلال تطبيق مرشح تجانس Gaussian على صورة العدسة ، مما يخلق تأثيرًا ضبابيًا يقلل من البيكسل الناجم عن التكبير.

أحدث التخريب المتاحة من هذا الإصدار يعمل مع كل من جافا-8 وجافا-11.

فيديوهات

التنزيلات