شارك المقالة

يشرح هذا المقال طريقة رسم قوس في Java داخل نافذة Swing باستخدام Graphics2D. القوس جزء من شكل بيضاوي، وتحدد إحداثياته داخل المستطيل المحيط به، إضافة إلى زاوية البداية ومقدار الزاوية المرسومة.

كود رسم قوس في Java

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class ArcDrawing extends JPanel {
    @Override
    protected void paintComponent(Graphics graphics) {
        super.paintComponent(graphics);
        Graphics2D g2 = (Graphics2D) graphics.create();
        g2.setColor(new Color(35, 110, 190));
        g2.setStroke(new BasicStroke(3));

        // المستطيل: x=60, y=60, العرض=220, الارتفاع=160
        // يبدأ القوس من 0 درجة ويمتد عكس عقارب الساعة 180 درجة
        g2.drawArc(60, 60, 220, 160, 0, 180);
        g2.dispose();
    }

    private static void createWindow() {
        JFrame frame = new JFrame("رسم قوس في Java");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new ArcDrawing());
        frame.setSize(360, 280);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(ArcDrawing::createWindow);
    }
}

فهم معاملات drawArc

تأخذ الدالة drawArc(x, y, width, height, startAngle, arcAngle) ست قيم: موضع المستطيل المحيط بالقوس، عرضه وارتفاعه، زاوية البدء، ثم مقدار الامتداد الزاوي. في المثال يبدأ الرسم من 0 درجة ويمتد 180 درجة، لذلك يظهر نصف بيضاوي. جرّب تغيير arcAngle إلى 90 أو 270 لملاحظة اختلاف الجزء المرسوم، وغيّر startAngle لتدوير موضع البداية.

إذا جعلت العرض والارتفاع متساويين، يصبح المسار جزءًا من دائرة؛ أما اختلافهما فينتج جزءًا من شكل بيضاوي. لا ترسم drawArc حشوة داخل الشكل، بل ترسم حد القوس فقط. لرسم قوس مغلق ومعبأ، تتوفر دالة fillArc في واجهة الرسوم نفسها.

لماذا نستخدم paintComponent؟

تستدعي Swing الدالة paintComponent عند الحاجة لإعادة رسم اللوحة، مثل ظهور النافذة أو تغيير حجمها. وضع الرسم داخلها يحافظ على ظهور الشكل بعد إعادة الرسم. نستدعي super.paintComponent أولًا لمسح الخلفية بالطريقة التي يديرها Swing، ثم ننشئ نسخة رسومية بواسطة create ونحررها في النهاية باستخدام dispose حتى لا نغير حالة كائن الرسوم الأصلي.

تشغيل البرنامج وتعديله

احفظ الملف باسم ArcDrawing.java، لأن اسم الملف يجب أن يطابق اسم الصنف العام، ثم شغّله من بيئة Java تدعم واجهة Swing. سيظهر إطار أبعاده 360×280 بداخلها قوس أزرق بسماكة 3 بكسلات. عدّل اللون في setColor أو السماكة في BasicStroke، وغيّر إحداثيات المستطيل لتغيير حجم القوس ومكانه.

يعتمد المثال على Java SE وSwing ولا يحتاج مكتبات خارجية. لمزيد من أمثلة Java العملية، راجع قسم Java، ويمكنك أيضًا الاطلاع على مثال حساب مساحة الدائرة في Java.

شاهد أيضًا
مقالات ذات صلة
🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع