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

أريد مساعدة في كيفية الرسم في برنامج رسام

بدأه عبادة رداد في 23 يوليو 2011 · 4 رد · 441 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

إخواني أريد طلب مساعدة

حيث طلب منا الدكتور القيام بمشروع برمجة رسام

مثل الرسام الذي في البرامج الملحقة

طبعا كنوع من التعلم الذاتي

المهم أنا بدأت فيه ولكن واجهتني بعض المشاكل

أهم هذه المشاكل هي الرسم على اللوحة مع مراعاة إمكانية التراجع ctrl+z

فكرت في طريقة وهي أن أنشئ لكل شكل (خط ، مستطيل ، دائرة ........) صنف class مستقل يقوم بوراثة JPanel كالتالي

public class Line extends Jpanel

ثم أعمل override للمنهج paintComponent

وأضيف خط على هذه الpanel من الزاوية إلى الزاوية

ويتم إنشاء كائن كائن من هذا الصنف وإضافتها إلى panel اللوحة و كذلك إضافتها إلى vector

وعند الضغط على زر تراجع يقوم بإخفاء آخر عنصر في الvector

طبعاً لم ينجح الرسم بهذه الطريقة حيث إن الخط مثلاً لا يرسم منه إلا نقطتان

الصنف الخاص بالخط مثلاً

public class Line extends JPanel{
    private Color color;
    public Line(Color c){
        color=c;
    }
protected void paintComponent(Graphics g){
    super.paintComponent(g);
    g.setColor(c);
    g.drawLine(0,0,this.WIDTH,this.HEIGHT);
}
}

هنا الكود الذي يستخدم هذا الصنف إذ يتم إنشاء كائن من الصنف السابق باسم line في mousePressed وإسناده إلى حقل field حتى يتم استخدامه في mouseDragged

private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) { 
int x=startingPoint.x,y=startingPoint.y;
            drawingPanel.setColor(currentColor); 
            line.setLocation(x, y);
            line.setSize(evt.getX()-x,evt.getY()-y);
            jPanel1.add(line);
            line.repaint();
            line.setVisible(true);
            jPanel1.repaint();
}

حيث startingPoint هو عبارة عن حقل field في داخل هذا الclass

ويتم وإعطاء قيم لstartingPoint في mousePressed

كذلك ظهرت مشكلة أخرى

وهي أن الشكل الناتج لديه لون خلفية مما يعني أنه سيغطي على الأشكال الأخرى التي يتواجد فوقها

ولم أستطع جعل الخلفية لJPanel شفافة

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

مشكورون

تم تعديل هذه المشاركة بواسطة عبادة رداد في 23 يوليو 2011 في 13:19

#2

توجد فئات متوفرة في الجافا تمثل عدة اشكال هندسية، لذلك لا داعي لكتابة فئات جديدة

Line2D

Rectangle2D

Ellipse2D

#3

ستجد ضالتك فى هذا البرنامج

انا كنت عملته فى بدايه السنه

/index.php?showtopic=235350

هتجد كل اسئلتك فيه

Software Developer
Mahmoudkelany.com


 

#4

يمكنك الاول ان تدرس الـ Graphices API وما تحويه

لانك لست على درايه بأبسط الاشياء الموجوده بداخلها

http://download.oracle.com/javase/tutorial/2d/index.html

Software Developer
Mahmoudkelany.com


 

#5

إخواني مشكورين الجميع

سأعمل بكل ما قلتم

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…