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

الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية

اذهب الى الأسفل

java -  الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية Empty الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية

مُساهمة من طرف أحمد مناع الإثنين ديسمبر 02, 2019 10:20 pm

أهلا وسهلا بكم اخوانى الكرام 

من بداية هذا المقال سبأبدء معكم سلسلة مقالات عن الرسم أو الجرافيك فى الجافا وذلك من خلال الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى توفرها الحزمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط].awt , تلك الفئة المجردة التى تحتوى على كافة الاساليب و الطرق التى يحتاجها المطورين فى رسم الأشكال الهندسية البسيطة والنصوص وحتى الصور فى تطبيقات الجافا.

_اساليب فئة الرسومات Graphics 

يوفر الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]  عدة أساليب لرسم ثلاثة أنواع من الكائنات الرسومية:


  1. الاسلوب drawString :لرسم النصوص
  2. الاسلوب drawXxx :لرسم الاشكال الهندسية حيث يمكن أن تكون Xxx خط  Line أو Rect أو Oval أو Arc أو 3DRect أو 3DRect ..الخ
  3. الاسلوب drawImage لرسم الصور النقطية.


كما توفر عدة طرق لملء الأشكال الهندسية :


  1. الاسلوب fillxxx :لملىء الاشكال الهندسية باللون حيث أن Xxx خط  Line أو Rect أو Oval أو Arc أو 3DRect أو 3DRect ..الخ
  2. الاسلوب 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)



و سيتم شرحها فى المقالات القادمة بشىء من التفصيل


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


java -  الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية AWT_GraphicsClassDiagram

وهذه الفئة تحتوي على الطرق الاكثر فاعلية فى للرسم وهي :


  1. fill3DRect()
  2. draw3DRect()
  3. rotate()
  4. scale()
  5. shear()
  6. transform()
  7. setRenderingHints()


وسيتم تناول كل تلك الطرق فى مقالا لاحقة باذن الله تعالى :

_كيف تتم عملية الرسم 

عندما نريد رسم رسوماتنا الخاصة فى تطبيق جافا ، يجب أن نضع شفرة الرسومات الخاصة بنا داخل طريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]...وهذة الطريقة لا نستطيع تغير تسميتها.لان النظام هو الذى يسميها... يتم استدعاء هذه الطريقة عندما يحين وقت الرسم.

 
الكود:

public void paint(Graphics g) {


 }

يمكنك ملاحظة أن كائن الرسومات [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] هو الوسيطة لهذا الأسلوب. إنه الرسم الفعلي الذي سيتم عرضه. يجب أن نعطيه للنظام.وبداخل هذه الطريقة نقوم بكتابة شفرات الرسم الخاصة بنا ....مثال بسيط لرسم خط :

الكود:
public void paint(Graphics g) {
    g.drawLine(25, 25, 120, 120);
  
  }


الاخراج :
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

كما تلاحظ قد قمنا بكتابة الشفرات داخل الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لرسم خط مستقيم.... حيث يستدعي النظام الفرعي للرسم الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى تقوم بدروها باستدعاء الطرق الثلاثة التالية:


  1. paintComponent ()
  2. paintBorder ()
  3. paintChildren ()


وذلك ومن أجل تحسين الاداء يجب تجاهل الطريقة paint فى عملية الرسم خصوصا اذا كان الرسم خاص بتطبيقات الجافا سوينج Swing components و نستبدل عوضا عنها الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وذلك على النحو التالى :



الكود:
public void paintComponent(Graphics g) {
    
    g.drawLine(25, 25, 120, 120);
  
  }

 الاخراج :


[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

المثال بالكامل :

الكود:

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);
  }
}


كما تلاحظ اننا قمنا برسم خط مستقيم بسيط لكن لا تستطيع تغير حجم الخط أو نوعه كما فى الصورة التالية وذلك لكوننا لم نستخدم حتى الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى تتيح رسمًا أكثر تعقيدًا من الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

java -  الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية Dashed_lines_demo

لذلك فى المقالات القادمة سيتم التركيز على الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] فى عملية الرسم

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1106
النقاط : 202032
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

java -  الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية Empty رد: الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية

مُساهمة من طرف NEXT السبت مارس 07, 2020 4:50 pm

أحسنتم 

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
java -  الرسم ثانئى الابعاد فى الجافا باستخدام Graphics2D...مقال 1_مقدمة تمهيدية Do.php?imgf=154090993464951
NEXT
NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200661
التقيم : 29
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى