السلام عليكم
كنا قبل يومين نحضر لحفل التخرج
تدريبات وتصوير والذي منه
لاحظت أن بعض الشباب في كليتنا
تقريباً يعتبرون أنفسهم عارضي أزياء ( موديل لمحبي الرطانة )
تصوير تصوير
كل حركة تصوير
لو أن القبائل البدائية تلقت هذا العدد من الصور
لاعتبروا أنفسهم بلا أرواح
(على أساس أن الكاميرا تقوم بخطف الروح
على حسب معتقدات البدائيين )
اخترت هذه المقدمة
من مقدماتي السخيفة لهذا الموضوع بالذات
لأن الكاميرا تخرج صورة
ولأننا سنتحدث عن كيفية توليد الصورة في الجافا
جميل الربط بين الأشياء 🙂
لكي أوفر وقتي ووقتكم
سأقوم بوضع الشيفرة
وأشرح عليها
الشيفرة مقتبسة من حزمة بياني ( الإصدارة إلى حد الآن لم تنشر )
public void savePic() throws IOException{ int w = getWidth(), h = getHeight();//طول وعرض الوصورة //نقوم بتحضير الصورة BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); //نقوم بتكوين الكائن الذي يمكننا من الرسم على الصورة Graphics2D g2d = image.createGraphics(); //نقوم ببناء هذه الدالة التي تقوم بالرسم على الصورة paint(g2d); //انتهينا من الرسم فنقوم بالتخلص من كائن الرسم g2d.dispose(); //نريد تخزين الصورة وعلى هذا نحتاج إلى مكان لنخزن فيه JFileChooser save=new JFileChooser(); save.setDialogType(JFileChooser.SAVE_DIALOG); save.showSaveDialog(this); File file = save.getSelectedFile(); if(file!=null){ //عملية تخزين الصورة على المكان الذي اخترناه ImageIO.write(image, "jpeg",file); } }
الآن ابتسموا لنأخذ صورة تذكارية
هيه عبده يا دب لا تقوم بعمل قرنين لسيد
تشيك شلاك
بعد أن أنجزنا مهمتنا بسلام
نعود إلى قواعدنا
أراكم في مواضيع أخرى
تحياتي
كل التحية الك يا نوارة
روعة كتير درس اليوم والصورة طلعت من احلى ما يكون تحياتي 🙂
مش قلتلك اضحك
بس منور الصورة يا معلم
تحياتي
شكرا عالشرح مفيد
على الرحب والسعة أخ عدنان
تحياتي
مشكور أخي علاء بس ممكن توضحلنا عمل دالة paint?
ومن أين يتم إدخال الصوره المراد حفظها؟
يتم الرسم في الدالة paint كما وضحت في الشرح
وكأنك ترسم على إطار Frame أو لوحة Panel
إذا لم تضح الصورة أخبرني وسأحاول أن أوضح أكثر
تحياتي
أشكرك أخي العزيز علاء لكن تقوم برسم الداله بنفسك أم تقصد أنها تضع صوره مخزونه مسبقاً وتقوم بعرضها على الـJPanel?
أتمنى لك مزيد من التقدم
لا
تقوم أنت برسم أي صورة وتقوم هذه الدالة بتحويلها إلى ملف
تحياتي
أهاااا مشكور حبيبي بس ممكن تعطيني الكود حق دالة الـpaint وسامحني على ثقل دمي 🙂
غريب أمرك يا محمد
نفس الدالة التي تستخدمها للرسم على المكونات
لكن وبما أنك ثقيل دم 🙂 فأنت تستحق معاملة خاصة
حيث الدالة drawAnithing موجودة في الفئة Graphics2D
بالمناسبة أمزح في موضوع ثقل الدم
أتمنى لك التوفيق
وأي أسئلة أخرى فأنا في الخدمة
تحياتي
أهااااااااااا الـpaint حق الأبلت كخخخخخخخخخخخخ <== بالله أنت كذا دائماً أهبل ولا أهبل صيفاً وغبي شتاءاً 🙂
ولما قلت رسم فهمت أنه رسم بالماوس مثل الرسام كخخخخخخخخخخخ
مشكور حبيبي علاء والعفو لو تعبتك
تقبل تفحيطي 🙂
ههههههههه
ترى عفرت الرمل علي
تحياتي
مساء الخير
ممكن لو سمحت تشوف هذه الكود ليش ما يشتغل
انا ابغاه يرسم بيكسلات على الصوره
احداثيات البيكسلات معرفه من عند ال user
لكن نواقذ الادخال ما تطلع حتى تسمح للuser بادخال القيم
وهذا رابط الكود
http://up3.m5zn.com/download-2009-5-10-04-whznulciy.java
امكن فيه شي ناقص في الكود
انا مو عارفته ياليت تساعدني
عندما تقومين بإضافة applet إلى Frame
فإنه يعامل كمكون عادي component
وهذا يعني أنه لن يتم مناداة الدالة init
لكي تحصلي على نفس سلوك applet
نادي init بنفسك
على كل لا أدري لماذا لم ترسمي مباشرة على Frame؟
هل هناك تفسير معين؟
على فكرة لو شغلتي الأبلت خاصتك في المتصفح أو في appletViewer
فهو يعمل
تحياتي
شكرا شكرا يعطيك الف عافيه (البرنامج اشتغل لما ناديت الدالة init();
في الmain)
بالنسبة لاستخدام ال applet هو لاني ابغى ارسم بيكسلات مستقيم ( بنفذ خوارزميات رسم مستقيم اوضح اللمستخدم كيف يترسم المستقيم )
وانا اعرف الapplet اسهل في الرسم
واخذت راي ثاني يفهم في الجافا قالي الapplet اسهل
انت ايش رايك ؟؟؟؟ اكمل بال applet ولا احول على ال panal
انا بتعلم الجافا عن طريق ال self study
ولهذا السبب اسال من النت واخذ براي مبرمجين الجافا
عندي سوال ثاني انا بسوي هذا البرنامج بواجهات
ابدا بتصميم الواجهة على ابلت كمان بما انه البرنامج ابلت
هل لو كان البرنامج applet اقدر اخلي برنامجي portable اقصد بيها اول ما ادخل السي دي يشتغل البرنامج
سوالي الاخير والمهم جدا بالنسبة للبرنامج ؟؟؟
ابغى البكسلات التي تظهر على الشاشه كبيره
كيف اسوي ؟؟
لقيت الميثود هذه بس ما اشغلت معاي ( اكيد في شي اسويه قبل تنفيذ هذه الميثود)
بحثت عنها بس ما لقيت
setPixels(int x, int y, int w, int h, int[] iArray)
Sets all samples for a rectangle of pixels from an int array containing one sample per array elemen
هل صحيح فهمي هذه الميثود تكبر البيكسل تبع الصوره
applet ,Frame لا يوجد اختلاف كبير بينهم في عملية الرسم
كل ما هنالك أن applet يعمل في صفحة ويب أما Frame فيعمل كتطبيق سطح مكتب
لا أسهل ولا أصعب فكلهم بنفس الآلية
portable معناها يعمل بدون اعتماد على نظام التشغيل
بينما أنت تتكلم عن شيء آخر
على كل حال applet لوحدها لن تعمل إلا لو وضعتها في صفحة ويب أو شغلتها باستخدام appletViewer أو أضفىتها إلى Frame
بالنسبة لموضوع setPixels فليس لدي أي معلومات حول الموضوع
على كل برنامجك لم يعمل لدي
تحياتي
انا هنا اضفت الابلت الى فريم
البرنامج يشتغل ما طلعتلك نوافذ الادخال بعد ما استدعينا الداله ّinit
في ال main
بس ما كملت البرنامج انا لسه بافي حالات اخرى سويت هنا لحاله وحده
فممكن تدخل ارقام وما راح يرسم
دخل هذه الارقام ويزبط الوضع 10,5,3,3
راح يترسم مستقيم صغير جدا
حاليا انا ببحث عن ميثود تكبر البكسلات
موضوع التكبير البيكسيل هذا خاطئ تماماً
المصطلح الأصح هنا زيادة عرض الخط
وهذا ممكن عن طريق Graphics2D
باستخدام الدالة setStroke
تحياتي
مساء الخير
ممكن تشوف الغلط في المساله هذه ايش
انا حولت من ابلت الى بانل
وصممت واجهة
وابغى المستخدم اذا ضغط الزر تطلعله نوافذ الادخال
وبعدين يترسم المستقيم
الشغل يكون ماشي تمام
لكن الرسمه ماتضهر مو عارفه ليش ؟؟؟؟
اكيد فيه شي ناقص
هذا رابط الكود
http://up3.m5zn.com/download-2009-5-16-11-wkala6mnh.java
لديك مشكلة بينة في منظم المحتوى LayoutManager
أن تقومي بعمل منظم المحتوى LayoutManager خاص بك ليس بالأمر السهل
أنصحك باستخدام أحد منظمي المحتوى الموجودين في جافا BorderLayout BoxLayout
تحياتي