السلام عليكم ورحمة الله
إخواني أريد طلب مساعدة
حيث طلب منا الدكتور القيام بمشروع برمجة رسام
مثل الرسام الذي في البرامج الملحقة
طبعا كنوع من التعلم الذاتي
المهم أنا بدأت فيه ولكن واجهتني بعض المشاكل
أهم هذه المشاكل هي الرسم على اللوحة مع مراعاة إمكانية التراجع 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 شفافة
هل من مساعدة بتصحيح الفكرة أو إعطاء فكرة أفضل
مشكورون