المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: مشروع جماعي -برنامج الرسام-
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي لغة جافا JAVA
علاء الصالحي
السلام عليكم

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

سيكون أول اجتماع يوم الاثنين الساعة 8 بتوقيت جرنيتش
سنحاول أن نضع وقت جيد للجميع بعد ذلك لكن لزاماً حضور أول اجتماع

تحياتي
علاء الصالحي
أنا آسف يا شباب
الآن انتبهت أني لم أذكر كلمة مساءاً
الساعة 8 مساءاً وليست صباحاً أي أنها بمعنى 20
لم أتلقى غير إيميلين لحد الآن وهما
الأخ mr.beshoy
والأخ خلدون خالد2
والأخ shado
مع هذا سنبدأ اليوم بإذن الله

تحياتي

تم التعديل لإضافة شادي
aboShoraih
معكم بعون الله و قوته
aboShoraih@hotmail.com
jfriend
السلام عليكم

كنت اود المشاركة في المشروع و لكن للاسف لن استطيع التواصل معكم
عبر البريد الالكتروني,
معلش اعذروني

موفقين ان شاء الله
HaKxEr
السلام عليكم ورحمة الله وبركاتة

انضم اليكم ان شاء الله

الايميل

aq5@windowslive.com

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

تحياتي
Eng.Fedail
كود
والبعض يظن أني مدرس خصوصي لأعلمه جميع ما يجهل


مو هذا اكان العشم فيك ياعلاء كلنا اخوان وكلن بعلمه يفيد غيره وكلنا مدرس لغيره اللذي ينقص علمه
ولا لما فتحنا المنتدى وواجهنا 24 ساعه
علاء الصالحي
أي نعم نحن إخوان
أي نعم وأتمنى أن أفيدكم بكل ما عندي
لكن هناك فرق في أن تشارك في مشروع جماعي
وأن تشارك في درس خصوصي
مشكلتكم أنكم تظنون أن كون المشروع للمبتدئين
يعني أن هدف المشروع تعليمكم
هذا غير صحيح مطلقاً
هدف المشروع الجماعي الأساسي
هو الإنتاج النهائي
على العموم انتهى النقاش في الموضوع
وقد أغلق المشروع بالنسبة لي
بإمكانكم الإكمال إن أردتوا
ويمكنك البدء من الشيفرة التي وضعتها لكم

تحياتي
Eng.Fedail
كما عهدنا وجدنا وقطفنا
سامح عمار
كلامك صح اخي علاء و لكن هناك تعليق بسيط بس ؟؟؟

هناك بعض الناس برضه بتبقي برضه مش عارفة تمشي مع الموضو ع شوية عشان

كده بيقعد تسال كتير لذلك كن صبور عليهم و جزاك خيرا

و انا عارف ان ده هيعطل المشروع غير ان البعض مش بيكمل كمان ؟؟؟؟؟؟؟؟؟؟؟


و بالتوفيق و هو اخي الساحر ربنا يوافقكم جميعا يارب بالتوفيق
man4maya
معك أخي المهم المواصلة في انجاز المشاريع و شكرا نحن هنا

mr_pro_2020
طيب يا جماعه المشروع دا لسه قائم ولا اإيه
؟؟

لو قائم ياريت تشاركوني فيه
اميلي هو

mr_pro_2020[AT]yahoo.com
علاء الصالحي
طيب بما أن عددكم كبير هكذا
ولو أني كنت لا أريد الإكمال
لكن لعل الله أن يطرح فيه خيراً
اطرحوا أفكار للمشروع
ليقم أحدكم بعمل تصميم مبدأي GUI سواءاً على مصمم أو سكيتشات رسم
أروني أنكم تريدون نجاح المشروع
ولنجعل هدفنا الناتج النهائي
لا النفع الشخصي
لا للقاءات الماسنجر حالياً
حتى أتأكد من أنكم تريدون العمل بجد

تحياتي
jfriend
السلام عليكم

قبل ما نبدا بالGUI component دعونا نتفق على الrequirements للمشروع
و بعدين بنترجمهم الىinterfaces حتى اللي حيبني الواجهات ما يتغلب

المتطلبات كبداية اراها كالتالي:
1) رسم خط, رسم مستطيل, رسم شكل بيضاوي, رسم مظلع
2) كتابة نص
3)قلم , ممحاة,و الملئ باللون
4) قص, لصق, نسخ
5) طبعا قائمة ملف و ما تحتويه من فتح و حفظ و حفظ باسم و جديد
6) قائمة تحرير و ما تحتويه من تراجع و تكرار

و ياريت كل واحد حاب يعدل فيها يطرح رأيه حتى الكل يستفيد

حياكم الله جميعا
علاء الصالحي
أنا موافق مبدأياً على المتطلبات التي طرحتيها jfriend
أضيف لها التراجع والاستعادة

تحياتي
man4maya
السلام عليكم فعلا أخوي نريد المتابرة و المتابعة يعني اولا تخطيط تم الاتفاق على المرحلة الاولى و هكدا حتى ننتهي بادن الله

جميل جدا ما أراه أريد فقط ان اضيف
- الالوان يعني اختيار الالوان من الباليت و هي سهلة
- عمل زووم و التراجع للخلف
-عمل دوران للرسم بالزوايا 90° او 360 وهكدا ,,,
وشكرا
jfriend
السلام عليكم

إقتباس
جميل جدا ما أراه أريد فقط ان اضيف
- الالوان يعني اختيار الالوان من الباليت و هي سهلة

صحيح اهم شيء قد نسيته

إقتباس
- عمل زووم و التراجع للخلف
-عمل دوران للرسم بالزوايا 90° او 360 وهكدا ,,,

رأيي ان نؤجل هاتين الفكرتين الى ان ننتهي
من الافكار السابقة لانهن لسنا باليسيرتين

علاء الصالحي
نكتفي بهذه المتطلبات مبدأياً
1) رسم خط, رسم مستطيل, رسم شكل بيضاوي, رسم مظلع
2) كتابة نص
3)قلم , ممحاة,و الملئ باللون
4) قص, لصق, نسخ
5) طبعا قائمة ملف و ما تحتويه من فتح و حفظ و حفظ باسم و جديد
6) قائمة تحرير و ما تحتويه من تراجع و تكرار
7) التراجع والاستعادة
8) اختيار الالوان من الباليت
9) عمل زووم و التراجع للخلف
10) عمل دوران للرسم بالزوايا 90° او 360 وهكدا ,,,

لو احتجنا زيادة متطلبات في ما بعد سنقوم بذلك
هل هناك أحد لديه تصور عن شكل البرنامج؟؟

تحياتي
mr_pro_2020


السلام عليكم


أظن ان ما ياتي بعد ذلك كماليات

لكن المهم ان نبدأ وياريت نبدأ بسرعه regular_smile.gif

ولا اعتقد ان الموضوع مبدائيا سوف يحتاج اكتر مما قيل

إقتباس
نكتفي بهذه المتطلبات مبدأياً
1) رسم خط, رسم مستطيل, رسم شكل بيضاوي, رسم مظلع
2) كتابة نص
3)قلم , ممحاة,و الملئ باللون
4) قص, لصق, نسخ
5) طبعا قائمة ملف و ما تحتويه من فتح و حفظ و حفظ باسم و جديد
6) قائمة تحرير و ما تحتويه من تراجع و تكرار
7) التراجع والاستعادة
8) اختيار الالوان من الباليت
9) عمل زووم و التراجع للخلف
10) عمل دوران للرسم بالزوايا 90° او 360 وهكدا ,,,


لكن عاوز نتكلم عن اننا هنشتغل من ايه كتاب ولا الموضوع هيمشي إنه شرح او سيتم طرح فكرة عامه مثلا و الكل يبحث عن
طريقه عملها وبعدين نتناقش

وياريت نعرف وسيله الاتصال هتكون عن طريق المنتدى ولا ماسنجرات

انا افضل انها تكون على المنتدى ويكون التكنيك اللي نمشي عليه انه سكو نفيه قائد للمشروع ويقول
هندور عن كذا والكل يدور و بكذا ممكن نحقق اكتر استفاده

تقبلوا تحياتي
علاء الصالحي
هذا مشروع جماعي بمعنى الكلمة
ستوكل مهام لكل من يشارك
لا وجود لشرح أو أي شيء
ستستفيد بالتفاعل مع المشروع
من المشاكل التي ستمر عليك
ننتظر أن يتبرع أحد بعمل واجهات للمشروع

تحياتي
Pal Coder
اولا اعتذر عن غيابي في الفترة الماضية

ثانيا / هل ستكون لغة المشروع عربي او انجليزي ؟

انا اقترح ان نعتمد اللغة الانجليزية ثم توفير اللغة العربية في النهاية
علاء الصالحي
العكس صحيح
العربية أولاً
ثم إن أردت أن تضيف غيرها فلا مانع

تحياتي
عبد الولي
نعم العربية أولا.
الشمري
السلام عليكم .

شكرا لك أخي alaadiaa .. لم أكن أظن ان الموضوع له علاقة بالجرافكس الا اليوم biggrin.gif .

أتمنى المشاركة .. ولكن قبل ذلك أريد أن أطرح وجهة نظري .

1- فصل GUI عن النواة .. يعني لا يجب أن يكون البرنامج " مشربك " مع الGUI .. فلو جاء شخص وقال انه لا يجب ال swing مثلا .. فانه يمكنه اعادة كتابة البرنامج .. باعادة كتابة كلاسين أو ثلاثة على أقصى تقدير ..

2- ينقسم البرنامج الى ثلاثة أقسام رئيسية :

- حزمة الصور لتحميل صور bmp - tga - jpg الخ .. يجب أن نكتب " من الصفر " كلاسات خاصة بتحميل هذه الصور .. صحيح أن هذا موجود بالجافا .. ولكن الهدف تعليمي .

- حزمة الرسم الاساسية .. حاويات الصور .. رسم النقاط والخطوط .. وتطبيق مبدأ ال Anti-aliasing .. الخ .. وممكن نعتمد على كلاسات الجافا الجاهزة .. للتسهيل .

- حزمة الواجهة .. وهي البرنامج نفسه باستخدام GUI مثل swing .



- أقترح أن تكون وجهة البرنامج مثل برنامج الرسام ( تماما) .. حتى يكون هناك تفاهم كبير بين الاعضاء .
- أنا مستعد لكتابة الجزء الخاص بقراءة وكتابة الصور .. وسنبدأ بصورة BMP كبداية .. وممكن نستعين بمكتبة مثل devil .. الى حين اكتمال هذا الجزء .

وبحكم أنك أخي alaadiaa قائد المشروع .. ستكون مديرنا ومسؤول عن الجزء المهم من البرنامج wink.gif .

المهم أن يكتمل المشروع خلال مدة واضحة محددة .. والابتعاد عن المسنجر biggrin.gif
علاء الصالحي
مادام الموضوع فيه الشمري باشا
إذاً فجهزوا أنفسكم
فهناك الكثير من الفائدة
جافا تحتوي على ثلاث فئات ستريحنا في النقطة الثانية حاويات الخطوط والمستطيلات والبيضاويات وهي
Line2D
Rectangle2D
Ellipse2D
وتحتوي على الدقتين double و float
بالنسبة للصور فحاويتها Image لكن إذا أردت أن نكتب حزمة لتحميل الصور
سنبحث وقتها آلية عمل حاوية لها

بالنسبة لتحليل تركيب البيانات
ما رأيكم في الأخ Gap buffer؟
أظنه أفضل الموجودين في عمليات الإضافة والحذف
يمكنكم البحث عنه للذين لا يعرفونه

أريد أن أؤكد على أن الجافا لا تعيد الرسم بنفسها
وإنما يجب علينا أن نحفظ الأشكال في تركيب بيانات ما
حتى نتمكن من إعاد الرسم مرة ثانية

تحياتي

الشمري
إقتباس
مادام الموضوع فيه الشمري باشا

شكرا على الاطراء .. لكن لا تعتمد علي كثيرا sad.gif .


إقتباس
أريد أن أؤكد على أن الجافا لا تعيد الرسم بنفسها
وإنما يجب علينا أن نحفظ الأشكال في تركيب بيانات ما
حتى نتمكن من إعاد الرسم مرة ثانية

نطبق ما يسمى بمفهوم ال Double Buffer ... .. الله يذكر الاخ أحمد غريب بالخير ,, اذكر أنه أول من أخبرني بتلك الطريقة ..

1- السطح الخلفي : Back Buffer .. نرسم عليه وهو مسرح العمليات ..

2- السطح الأمامي : Front Buffer .. وهو السطح الخلفي بعد احضاره الى الامام .

في الويندوز .. نستخدم ما يسمّى بالDC .. لكن في الجافا لا أعلم .. سأبحث في هذا الموضوع .

- سأقوم بعمل تجارب مبدئية .. وطرحها هنا باذن الله .. الى ان تتضح لدي الصورة .
خلدون خالد2
السلام عليكم من جديد
بالنسبة لفصل النواة عن الواجهة فهو ممكن ولكن لا يمكن فصل النواه عن الأحداث Events
يجب تجهيز كلاسات للأحداث Mouse Down , Mouse Move , Mouse Up
طبعا هذه الأحداث تحصل على لوحة الرسم , بعد عمل ذلك سيكون من السهل الإنتقال إلى مرحلة تنفيذ عملية الرسم (حسب الأداة المختارة من المستخدم)
jfriend
السلام عليكم

بداية لدي طلب صغير و هو استخدامكم لترجمة الحرفيه
للمصطلحات الانجليزية صراحة انا استصعب قراءة الردود حيث توجد
كلمات لا أفهم ما مقابلها في لغة الجافا مثلا نواه, حاوبة, فئة
لم افهم سوى حزمة يعني باكج wacko.gif

إقتباس
1- فصل GUI عن النواة .. يعني لا يجب أن يكون البرنامج " مشربك " مع الGUI .. فلو جاء شخص وقال انه لا يجب ال swing مثلا .. فانه يمكنه اعادة كتابة البرنامج .. باعادة كتابة كلاسين أو ثلاثة على أقصى تقدير ..

امممم تريد ان تعمل مثل مبدأ MVC
فعلا طريقة جيدة لاكثر من سبب اولا الفصل وهو شيء جيد
بالاضافة الى اننا نقلل من حجم الكود بالكلاس الواحد لان كبر الكود امر يضايقني عند البرمجة

إقتباس
1- السطح الخلفي : Back Buffer .. نرسم عليه وهو مسرح العمليات ..

2- السطح الأمامي : Front Buffer .. وهو السطح الخلفي بعد احضاره الى الامام .

صراحة لم أفهم ماذا تقصد اذا ممكن أخي الفاضل توضح أكتر

حياكم الله جميعا
الشمري
بالنسبة للترجمة فهي ليست حرفية biggrin.gif .
class : فئة .
core : نواة .
container : حاوية .
النافذة : Window أو Frame ..
اعادة الرسم : repaint .
http://mindprod.com/jgloss/repaint.html

---------------
المشكلة الأساسية و التي يدور حولها البرنامج هي بالسطح الذي نرسم عليه .. السطح هو ال Buffer .. يعني جزء من الشاشة نرسم عليه .

لو رسمت أي شيء في الجافا .. فان الرسم سيزول بمجرد اعادة رسم النافذة .. نقصد باعادة الرسم .. ان تظهر نافذة فوق نافذة البرنامج او عند تصغير البرنامج .. لذلك لا نرسم مباشرة على النافذة ..انما نخزن بيانات الرسم في كلاس نسميه مثلا Buffer .. وهو بمثل أبعاد ال Frame .. ويحوي على مصفوفة من البايتات التي تمثل اللون RGBA مثلا .. ثم في الحدث( event ) الخاص باعادة الرسم .. ننسخ محتوى ال Back Buffer الى ال Frame الذي نرسم عليه .

لا أريد أن أتحدث كثيرا الى حين أن أجرب مع الجافا .. لم اجرب ذلك مع الجافا ولكن مع Win32 API .. وأعتقد ان الجافا تقدم ماهو أسهل باذن الله .. لذلك كل ما قلته مجرد كلام نظري ..
علاء الصالحي
بصراحة أنا قمت بذلك مسبقاً أخي الشمري
كنت أحفظ الأشكال في حلقات متسلسلة أحادية الاتجاه
ثم أعيد رسمهم مرة أخرى
لكني أريد أن نعمل على جودة أعلى
لو حاولنا تطويره إلى مستوى أفضل من الرسم
لو أردنا أن نقدم شكل على شكل أو نضيف شكل في مكان معين
امممممممممممممممم
شكلي هصعبها عليكم

على العموم يكمنكم مراجعة البرنامج الذي وضعته هنا
للتعرف بشكل أكبر على الطريقة

تحياتي
علاء الصالحي
هل هناك من يعمل على واجهة ؟؟؟
هل هناك من هو مهتم أصلاً بموضوع المشروع

تحياتي
الشمري
إقتباس
هل هناك من يعمل على واجهة ؟؟؟
هل هناك من هو مهتم أصلاً بموضوع المشروع


مهتم طبعا .. ولكن مشكلتي هي بالبحث عن أفضل الطرق للتنفيذ ..

قمت بعمل برنامج ( لاستعراض الصور .. واضافة تأثيرات عليها ) .. للتجربة فقط ..

وسأضيفه هنا ان شاء الله .. لكن واجهت مشكلة أخي .. وهي ماهو الكلاس الرئيسي في الجافا المسؤول عن تحميل الصور .. حتى ارث منه .. وأبني عليه .. وجدت عدة كلاسات ..

الفئات ( الكلاسات ) التي استخدمتها هي ImageIO و ImageReaders .. ولكنها لا تقرأ الا ملفات ال bmp ..على عكس ما توقعت ..
وجدت methods في ال JApplet .. على مااذكر أنها getImage .. وهي تحمل عدة انواع من الصور .. ولكن لا اعتقد ان استخدامها يفيد المشروع.

عموما .. سأضيف التجربة الأولى ( ان شاء الله ) .. وسأحاول أن اعمل interface لتحميل الصور اذا لم اجد كلاس مشابه في الجافا ..
ثم سأضيف " شخابيط " تمثل واجهة البرنامج المقترحة .. وأمور أخرى ..
لكن يجب أن يساعدني أحد .. فلا أستطيع أن اعمل شيء لوحدي .
خلدون خالد2
كنت رسمت يوم امس تخطيط للواجهة بإستخدام الرسام (الشخابيط) ولكن للأسف ليس لدي IDE لأقوم بتصميميها من خلاله
الصوره
إضغط لإظهار المرفق
لعل أحد الأخوان يقوم بتصميمها و يرفق الكود

الشمري
كنت اقترحت أن تكون واجهة البرنامج مثل الرسام الموجود مع الويندوز .. نسخة طبق الاصل يعني ..
مع اضافة تعديلات بسيطة .. ( مثل ازالة لوح الالوان .. لاننا سنستخدم ال JColorChooser ( اظن اسمه كذا ) ..

والهدف من ذلك .. ازالة أي غموض .. وحتى تكون الامور واضحة
علاء الصالحي
الفئة المسؤولة عن الصور في جافا هي ImageIO
كود
    Image image = null;
    try {
        // Read from a file
        File sourceimage = new File("source.gif");
        image = ImageIO.read(sourceimage);
    
        // Read from an input stream
        InputStream is = new BufferedInputStream(
            new FileInputStream("source.gif"));
        image = ImageIO.read(is);
    
        // Read from a URL
        URL url = new URL("http://java-tips.org/source.gif");
        image = ImageIO.read(url);
    } catch (IOException e) {
    }

هذه الطرق التي يمكن من خلالها أن تحمل صورة إلى الذاكرة
هذا المثال يوضح العكس
هل جربتها ولم تستطع فتح غير bmp??

جيد خلدون لكن فعلاً نحن اتفقنا على ان تكون واجهة شبيهة بالرسام
أنا أردت من يقوم بتصميمها على IDE

تحياتي
الشمري
لسلام عليكم .

- اعتذر عن الـتأخير , حيث أني لا أملك اتصال بالنت من خلال البيت .. بسبب شركة الامتصاصات السعودية .. اتصل من مقهى .

- كما أتمنى من الاخ علاء كونه صاحب الموضوع .. من تعديل عنوان الموضوع وازالة كلمة المبتدئين .. حتى يدخل الخبراء ويشاركوننا !!!

- التجربة الأولى ... Painter Plus


إضغط لإظهار المرفق

- الهدف من التجربة هو الاطلاع على أهم ما نحتاج للبرنامج .. وماهي العوائق التي ستواجهنا ..

- البرنامج في المرفقات .. اسميت البرنامج Painter Plus .. كاسم مؤقت .. وكل الكلاسات تبدأ بالبادئة PP اختصارا لاسم البرنامج وليتوضح لكم الأمر .

- تصميم الكود وهندسة البرنامج سيئة .. بسبب خبرتي القليلة .. بال swing و البرمجة المرئية عموما بالجافا .. كل ما أعرفه هو ما درسته فقط .. لذلك نحتاج لشخص ( فاهم regular_smile.gif ) يساعدنا على الأقل في الأمور الخاصة بال swing ... حتى يمكن لنا( نحن الاعضاء) الاستمرار ..

- فكرة أولية .. وتحليل للبرنامج :

البرنامج يتكون من خمسة أقسام رئيسية :

1- Tool Box : وسيحوي على الادوات الخاصة بالرسم .

2- Tool Bar : يحوي على ايقونات معروفة .. مثل التراجع .. والحفظ ..

3- Status Bar : شريط الحالة .. سيحوي على معلومات لوصف ما تقع عليه فأرتنا .. mouse .

4 - القائمة الرئيسية : معروفة ..

5- Canvas : وهو السطح ( جزء من النافذة ) الذي سنرسم عليه .. اسميته بهذا الاسم .. لانه متعارف عليه من بين أغلب برامج الرسم مثل photoshop .

وهو أحد أكثر الاجزاء أهمية .. ومن خلاله نحول برنامجنا من برنامج متواضع الى فوتوشوب :-) .

- نلاحظ أن ال Canvas هو عبارة عن JPanel
- لانرسم مباشرة على Canvas .. انما نرسم على جزء من الذاكرة BufferedImage .. .
- بالتالي لو رسمنا على BufferedImage نكون قد استطعنا ان نحول هذا BufferedImage الى الطابعة أو النافذة او الى ملف صورة ..
- نكون قد تحررنا من ال JPanel أو ال Canvas .. واذا أردنا تطبيق تأثير معيّن .. نجد أمامنا صورة في الذاكرة بالامكان تعديلها كيفما نريد.

سيكون الأمر شبيها بالتالي :

إضغط لإظهار المرفق

- التجربة في المرفقات .. وتستطيع فتح صور .. وتخزين صور ( شكرا لك أخي علاء على المساعدة) ..
- وتستطيع اضافة بعض المؤثرات ..

- حقيقة .. ما لاحظته .. أننا نحتاج لمناقشة وتحليل عميق للبرنامج .. كيف سيتم ( تصميم كود البرنامج ) وكيف سيتم ادارة الصورة في الذاكرة .. وكيف سنقوم بعملية التراجع ) ... الخ..

- كما أننا نحتاج الى التفكير بالمستقبل :-) .. ماذا عن Layers .. كيف نبني برمنامجنا الان بحيث يمكن تطويره مستقبلا لدعم الطبقات ..


أتمنى المزيد من التحليل .. من خلال النقاط التالية ان احببتم :

1- كم BufferedImage نحتاج على الاقل لنرسم عليها .. وكيف سنديرها .. قد نحتاج الى BufferedImage لنقوم بالرسم الوهمي ( الارشادي) ... لانه رسم مؤقت .. هل فهمتوا قصدي .

2- كيف سنقوم بعمل undo و redo .. فكرت بعملية Backup كامل للصورة أو جزء من الصورة .. ولكن هذا سيستنزف الذاكرة ..

3- تصميم كود البرنامج كيف سيكون .. أتوقع انه يجب ان نستعين كثيرا بالواجهات interfaces .. حتى نفصل الواجهة عن ال implementation .. حتى نستطيع أن نستقل ببرنامجنا عن الجافا ومكتباتها ..

أتمنى من الخبراء المشاركة .. واظهار ما لديهم .. لا نريد الموضوع تعليمي .. بل نريد أن تضعوا ثقلكم بهذا البرنامج biggrin.gif .
وكل عام وأنتم بخير ,, وتقبل الله منا ومنكم الصيام والقيام ..

في المرفقات البرنامج .. قمت بنسخ كامل المجلد بما يحويه .. لعل ذلك ان يسهل عليكم استيراده من NetBeans ( قلت لكم خبرتي قليلة) ..
علاء الصالحي
السلام عليكم

كيف حالك أخي الشمري
آسف إن كنت تأخرت عليك في الرد
اطلعت على الشيفرة الخاصة بك
فهمت أنك تريد فصل الواجهات عن باقي النظام
في الأغلب عند محاولة الفصل في النظام
يستخدم mvc لذلك
حاولت أن أستنتج أين المتحكم controller في نظامك ففشلت
بالنسبة للأخ model فهو BufferImage
بالنسبة للأخ view فهو باقي النظام من شريط جانبي وسفلي وشريك أدوات وعارض الصور
يجب أن تتم عملية الربط بين الواجهات والأدوات المختلفة باستخدام controller
بالمناسبة لاحظت أنك تستخدم الدالة update
أذكر أني كنت أستخدم paint أو paintComponent
هل تعرف أي فرق بينهم؟؟؟
بالنسبة لموضوع الفلاتر أرى أنها مرحلة سابقة لأوانها

تحياتي
الشمري
إقتباس
في الأغلب عند محاولة الفصل في النظام
يستخدم mvc لذلك
حاولت أن أستنتج أين المتحكم controller في نظامك ففشلت
بالنسبة للأخ model فهو BufferImage
بالنسبة للأخ view فهو باقي النظام من شريط جانبي وسفلي وشريك أدوات وعارض الصور

للاسف .. لا أعرف الكثير عن هذه المصطلحات .. فقد سبق أن قرأت عنها .. لكن بدون تطبيق أو حتى فهم جيد ..
لذلك كما قلت .. من الأفضل أن يوجد شخص متخصص بتصميم الكود .. عن طريق ال UML مثلا .. و سأقوم بالتطبيق ان شاء الله ,

إقتباس
بالمناسبة لاحظت أنك تستخدم الدالة update
أذكر أني كنت أستخدم paint أو paintComponent
هل تعرف أي فرق بينهم؟؟؟

حقيقة .. الدالة update .. أنا من أنشأتها ( قد يكون لها اسم مشابه في awt أو swing .. ) ..
بالنسبة لتحديث الرسم استخدم repaint .. والرسم دائما يكون داخل paintComponent ..
لا أظن أني سأقوم بتطوير البرنامج .. انما بعمل التجارب فقط .. وليقوم شخص آخر بتحويل مجموعة التجارب الى تطبيق .. اذا كان قادر على انتاج كود واضح.
----
كشرح سريع للكود الذي أضفته .. نبدأ من ال Main ننتقل الى PPFrame لانشاء الادوات .. ومن ثم ننتقل الى PPCanvas .. لرسم الصور .. وأي أحداث تقع .. فانها موجودة داخل الكلاس PPFileMenuActions و PPImageMenuActions الخ .. ومن ثم بعد تلك الevents .. يتم تحديث PPCanvas ( عن طريق repaint ) ..
----

- الخطوة القادمة ( ان شاء الله ) ( رسم خط مستقيم + رسم الخطوط الارشادية التي تظهر أثناء رسم الخط .. وتختفي في حال انتهاء النقر على left/right mouse button ) .. هل يعرف أحد خوارزمية لعمل ذلك .. وتعميم هذه الخوارزمية لتطبيقها على الفرشاة + الصبغ + الممحاة .. الخ

اذا عملنا الخطوة هذه .. تكون بقية الادوات تتبع نفس الأسلوب ..

أتمنى المشاركة ,

خلدون خالد2
مجهود مبارك اخي شمري
لقد إطلعت على الكود
انا ما عندي beans و لكن جربت اشغله بإستخدام ال JCreator ولكن لم اتمكن من ذلك .
بكل الأحوال
إقتباس
- الخطوة القادمة ( ان شاء الله ) ( رسم خط مستقيم + رسم الخطوط الارشادية التي تظهر أثناء رسم الخط .. وتختفي في حال انتهاء النقر على left/right mouse button ) .. هل يعرف أحد خوارزمية لعمل ذلك .. وتعميم هذه الخوارزمية لتطبيقها على الفرشاة + الصبغ + الممحاة .. الخ

سأزودك بالخوارزميه قريبا إن شاء الله
خلدون خالد2
السلام عليكم
هذه الخوارزميه لرسم الخط و المربع (طبعا سهلات جداا)
-هنا افترض وجود متغيريين عامين للإستخدام المؤقت , طبعا المتغيران يجب ان نستطيع الوصول لهما من الأحداث (events)
-في دوال الأحداث أفترض أن النظام (نظام الأحداث) يعطينا إحداثيات موقع الماوس من خلال المتغيرات X,Y
كود
Int x1,x2;

On_Mouse_Down(int x,int y){

           X1=x;

           X2=x;

}

On_Mouse_left”Release”(int x,int y){

  Switch (selectedTool==_Line){

  Case _Line{  

    Canvas.DrawLine(x1,y1,x,y); // or // BufferedImage.Draw….

  }

  Case _Square{

    Canvas.DrawSquare(x1,y1, abs(x-x1), abs(y-y1)); BufferedImage.Draw....

  }

  }// Switch End

}// Mouse_left  End

بإنتظار (التغذيه الراجعه) , و بعدها أعطيك خوارزميات لباقي الأشكال إن شاء الله
خلدون خالد2
UP!! blink.gif huh.gif
الشمري
لم أعمل شيء biggrin.gif .

ولكن من الممكن كتابة شيء .. لو اضاف أحد شيء ,, نحتاج تشجيع :-) .

سأحاول أضيف شيء جديد خلال اليومين القادمين .. ان شاء الله .,
علاء الصالحي
السلام عليكم

كيف حالكم يا شباب
والله لي فترة أريد أن أكتب هنا لكن الإحباط أوقفني كثيراً
قمت بعملية إعادة تصنيع سريعة للشيفرة التي وضعها الأخ الشمري
وسأضعها لتحميس الهمم
على فكرة أكثر ما ضايقني في الشيفرة
هو جعل المتغيرات public واستخدامها بشكل مباشر
أربكني بشكل كبير
يبدو لي وكأنك لم تتعامل مع OO من قبل
(آسف إن أسأت لك في هذه الكلمة)

بإذن الله في أقرب فرصة سأحاول وضع تصميم جديد
سأحاول فيه إعطاء البرنامج صبغة المرونة بشكل أكبر

تحياتي
ADEL-N-N
السلام عليكم

كيف الحال اخواني انا حديد على الجافا ولقد اعجبني الموضوع وتفاعلكم ولقد قمت بتحميل الملف الذي قام الاخ الشمري بترتيبه لكي يكون واجهه للبرنامج واشتغل معاي اخر حلاوه

بس الملفات للاخ علاء مارشت تشتغل معاي ولا اعرف لماذا فهل يوجد واحد من الاخوان جربها وشافها تشتغل لو لا وحبيت اضيف انه الموضوع اعتقد صارله فتره متوقف ومافي اي تفاعل مع الموضوع

وشكرا لكل الاخوان الموجودين
عـــــــــــــادل
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2008 Invision Power Services, Inc.