الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: التعامل مع الرسومات Java 2D/3D Graphics
صفحة 1 من اصل 1 • شاطر
الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية
أهلا وسهلا بكم اخوانى الكرام
من بداية هذا المقال سبأبدء معكم سلسلة مقالات عن الرسم أو الجرافيك فى الجافا وذلك من خلال الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى توفرها الحزمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط].awt , تلك الفئة المجردة التى تحتوى على كافة الاساليب و الطرق التى يحتاجها المطورين فى رسم الأشكال الهندسية البسيطة والنصوص وحتى الصور فى تطبيقات الجافا.
_اساليب فئة الرسومات Graphics
يوفر الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] عدة أساليب لرسم ثلاثة أنواع من الكائنات الرسومية:
كما توفر عدة طرق لملء الأشكال الهندسية :
وطرق اخرى لمسح وحذف اجزاء من الرسم على النحو التالى :
و سيتم شرحها فى المقالات القادمة بشىء من التفصيل
أما الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الممتدة من فئة الرسومات [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لتوفير تحكم أكثر تطوراً في رسم الاشكال الهندسة ، وإدارة الألوان ، وتخطيط النص بشكل أكثر احترافية وهي الفئة الأساسية لتقديم أشكال ثنائية الأبعاد حيث يتيح رسمًا أكثر تعقيدًا ، مثل الخطوط ذات السماكة المتفاوتة ، وملء الأشكال بالألوان والأنماط ، ورسم الخطوط المتقطعة ، والنص المتراكب المتراكب والرسومات ، والتدرجات والملمس ....الخ
![الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية AWT_GraphicsClassDiagram](https://www.ntu.edu.sg/home/ehchua/programming/java/images/AWT_GraphicsClassDiagram.png)
وهذه الفئة تحتوي على الطرق الاكثر فاعلية فى للرسم وهي :
وسيتم تناول كل تلك الطرق فى مقالا لاحقة باذن الله تعالى :
_كيف تتم عملية الرسم
عندما نريد رسم رسوماتنا الخاصة فى تطبيق جافا ، يجب أن نضع شفرة الرسومات الخاصة بنا داخل طريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]...وهذة الطريقة لا نستطيع تغير تسميتها.لان النظام هو الذى يسميها... يتم استدعاء هذه الطريقة عندما يحين وقت الرسم.
يمكنك ملاحظة أن كائن الرسومات [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] هو الوسيطة لهذا الأسلوب. إنه الرسم الفعلي الذي سيتم عرضه. يجب أن نعطيه للنظام.وبداخل هذه الطريقة نقوم بكتابة شفرات الرسم الخاصة بنا ....مثال بسيط لرسم خط :
الاخراج :
![الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية 116108576](https://www2.0zz0.com/2019/12/03/18/116108576.png)
كما تلاحظ قد قمنا بكتابة الشفرات داخل الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لرسم خط مستقيم.... حيث يستدعي النظام الفرعي للرسم الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى تقوم بدروها باستدعاء الطرق الثلاثة التالية:
وذلك ومن أجل تحسين الاداء يجب تجاهل الطريقة paint فى عملية الرسم خصوصا اذا كان الرسم خاص بتطبيقات الجافا سوينج Swing components و نستبدل عوضا عنها الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وذلك على النحو التالى :
الاخراج :
![الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية 116108576](https://www2.0zz0.com/2019/12/03/18/116108576.png)
المثال بالكامل :
كما تلاحظ اننا قمنا برسم خط مستقيم بسيط لكن لا تستطيع تغير حجم الخط أو نوعه كما فى الصورة التالية وذلك لكوننا لم نستخدم حتى الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى تتيح رسمًا أكثر تعقيدًا من الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
![الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية Dashed_lines_demo](https://www.codejava.net/images/articles/javase/graphics/line-drawing/dashed_lines_demo.png)
لذلك فى المقالات القادمة سيتم التركيز على الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] فى عملية الرسم
من بداية هذا المقال سبأبدء معكم سلسلة مقالات عن الرسم أو الجرافيك فى الجافا وذلك من خلال الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى توفرها الحزمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط].awt , تلك الفئة المجردة التى تحتوى على كافة الاساليب و الطرق التى يحتاجها المطورين فى رسم الأشكال الهندسية البسيطة والنصوص وحتى الصور فى تطبيقات الجافا.
_اساليب فئة الرسومات Graphics
يوفر الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] عدة أساليب لرسم ثلاثة أنواع من الكائنات الرسومية:
- الاسلوب drawString :لرسم النصوص
- الاسلوب drawXxx :لرسم الاشكال الهندسية حيث يمكن أن تكون Xxx خط Line أو Rect أو Oval أو Arc أو 3DRect أو 3DRect ..الخ
- الاسلوب drawImage لرسم الصور النقطية.
كما توفر عدة طرق لملء الأشكال الهندسية :
- الاسلوب fillxxx :لملىء الاشكال الهندسية باللون حيث أن Xxx خط Line أو Rect أو Oval أو Arc أو 3DRect أو 3DRect ..الخ
- الاسلوب setColor :ايضا لطلاء الالوان للشكل
وطرق اخرى لمسح وحذف اجزاء من الرسم على النحو التالى :
- الكود:
// رسم النصوص:
drawString(String str, int xBaselineLeft, int yBaselineLeft);
// رسم الخطوط
drawLine(int x1, int y1, int x2, int y2);
drawPolyline(int[] xPoints, int[] yPoints, int numPoint);
// رسم الاشكال الهندسية
drawRect(int xTopLeft, int yTopLeft, int width, int height);
drawOval(int xTopLeft, int yTopLeft, int width, int height);
drawArc(int xTopLeft, int yTopLeft, int width, int height, int startAngle, int arcAngle);
draw3DRect(int xTopLeft, int, yTopLeft, int width, int height, boolean raised);
drawRoundRect(int xTopLeft, int yTopLeft, int width, int height, int arcWidth, int arcHeight)
drawPolygon(int[] xPoints, int[] yPoints, int numPoint);
// ملىء الاشكال الهندسية
fillRect(int xTopLeft, int yTopLeft, int width, int height);
fillOval(int xTopLeft, int yTopLeft, int width, int height);
fillArc(int xTopLeft, int yTopLeft, int width, int height, int startAngle, int arcAngle);
fill3DRect(int xTopLeft, int, yTopLeft, int width, int height, boolean raised);
fillRoundRect(int xTopLeft, int yTopLeft, int width, int height, int arcWidth, int arcHeight)
fillPolygon(int[] xPoints, int[] yPoints, int numPoint);
// رسم الصور النقطية
drawImage(Image img, int xTopLeft, int yTopLeft, ImageObserver obs); // draw image with its size
drawImage(Image img, int xTopLeft, int yTopLeft, int width, int height, ImageObserver o); // resize image on screen
//مسح المنطقة مستطيلة إلى الخلفية
void clearRect(int x, int y, int width, int height)
//انسخ المنطقة المستطيلة إلى الإزاحة (dx، dy).
void copyArea(int x, int y, int width, int height, int dx, int dy)
و سيتم شرحها فى المقالات القادمة بشىء من التفصيل
أما الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الممتدة من فئة الرسومات [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لتوفير تحكم أكثر تطوراً في رسم الاشكال الهندسة ، وإدارة الألوان ، وتخطيط النص بشكل أكثر احترافية وهي الفئة الأساسية لتقديم أشكال ثنائية الأبعاد حيث يتيح رسمًا أكثر تعقيدًا ، مثل الخطوط ذات السماكة المتفاوتة ، وملء الأشكال بالألوان والأنماط ، ورسم الخطوط المتقطعة ، والنص المتراكب المتراكب والرسومات ، والتدرجات والملمس ....الخ
![الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية AWT_GraphicsClassDiagram](https://www.ntu.edu.sg/home/ehchua/programming/java/images/AWT_GraphicsClassDiagram.png)
وهذه الفئة تحتوي على الطرق الاكثر فاعلية فى للرسم وهي :
- fill3DRect()
- draw3DRect()
- rotate()
- scale()
- shear()
- transform()
- setRenderingHints()
وسيتم تناول كل تلك الطرق فى مقالا لاحقة باذن الله تعالى :
_كيف تتم عملية الرسم
عندما نريد رسم رسوماتنا الخاصة فى تطبيق جافا ، يجب أن نضع شفرة الرسومات الخاصة بنا داخل طريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]...وهذة الطريقة لا نستطيع تغير تسميتها.لان النظام هو الذى يسميها... يتم استدعاء هذه الطريقة عندما يحين وقت الرسم.
- الكود:
public void paint(Graphics g) {
}
يمكنك ملاحظة أن كائن الرسومات [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] هو الوسيطة لهذا الأسلوب. إنه الرسم الفعلي الذي سيتم عرضه. يجب أن نعطيه للنظام.وبداخل هذه الطريقة نقوم بكتابة شفرات الرسم الخاصة بنا ....مثال بسيط لرسم خط :
- الكود:
public void paint(Graphics g) {
g.drawLine(25, 25, 120, 120);
}
الاخراج :
![الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية 116108576](https://www2.0zz0.com/2019/12/03/18/116108576.png)
كما تلاحظ قد قمنا بكتابة الشفرات داخل الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لرسم خط مستقيم.... حيث يستدعي النظام الفرعي للرسم الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى تقوم بدروها باستدعاء الطرق الثلاثة التالية:
- paintComponent ()
- paintBorder ()
- paintChildren ()
وذلك ومن أجل تحسين الاداء يجب تجاهل الطريقة paint فى عملية الرسم خصوصا اذا كان الرسم خاص بتطبيقات الجافا سوينج Swing components و نستبدل عوضا عنها الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وذلك على النحو التالى :
- الكود:
public void paintComponent(Graphics g) {
g.drawLine(25, 25, 120, 120);
}
الاخراج :
![الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية 116108576](https://www2.0zz0.com/2019/12/03/18/116108576.png)
المثال بالكامل :
- الكود:
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass extends JPanel {
public void paintComponent(Graphics g) {
g.drawLine(25, 25, 120, 120);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new MainClass());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200,200);
frame.setVisible(true);
}
}
كما تلاحظ اننا قمنا برسم خط مستقيم بسيط لكن لا تستطيع تغير حجم الخط أو نوعه كما فى الصورة التالية وذلك لكوننا لم نستخدم حتى الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى تتيح رسمًا أكثر تعقيدًا من الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
![الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية Dashed_lines_demo](https://www.codejava.net/images/articles/javase/graphics/line-drawing/dashed_lines_demo.png)
لذلك فى المقالات القادمة سيتم التركيز على الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] فى عملية الرسم
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية
أحسنتم
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
![الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية Do.php?imgf=154090993464951](http://egytech.eu5.org/kleeja-2.4/do.php?imgf=154090993464951.png)
NEXT- الادارة
- تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200660
التقيم : 28
الدولة :
الجنس :
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: التعامل مع الرسومات Java 2D/3D Graphics
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
» تصميم تطبيق جوال لمغسلة ملابس
» تصميم تطبيق جوال لشركة عقارات
» شركة مكافحة النمل الابيض بالرياض
» تصميم تطبيق جوال لنقل الاثاث
» هناجر
» تصميم تطبيق جوال لمتجر ورد
» تصميم تطبيق جوال لسلسلة مطاعم
» تصميم تطبيق جوال لتوصيل الطلبات
» مظلات سيارات متحركة