AWT Graphics এবং Drawing

এডাব্লিউটি (AWT) - Java Technologies

406

AWT Graphics এবং Drawing হল AWT-তে গ্রাফিক্যাল কন্টেন্ট (যেমন লাইন, আকার, টেক্সট) তৈরি এবং প্রদর্শনের জন্য ব্যবহৃত একটি শক্তিশালী ফিচার। AWT গ্রাফিক্সের মাধ্যমে আপনি বিভিন্ন গ্রাফিক্যাল উপাদান আঁকতে এবং ব্যবহারকারীর ইন্টারঅ্যাকশনের ভিত্তিতে তা আপডেট করতে পারেন। AWT গ্রাফিক্স ব্যবহারের জন্য Graphics ক্লাসের মাধ্যমে বিভিন্ন আঁকানোর মেথডগুলোর ব্যবহার করা হয়।

AWT Graphics:

AWT-তে Graphics ক্লাস ব্যবহৃত হয় গ্রাফিক্স ড্রইং-এর জন্য। এটি একটি অ্যাবস্ট্রাক্ট ক্লাস যা 2D গ্রাফিক্স প্রোগ্রামিং এর জন্য বিভিন্ন পদ্ধতি প্রদান করে। গ্রাফিক্যাল উপাদান তৈরি এবং আঁকানোর জন্য paint() মেথডের মধ্যে Graphics অবজেক্টটি ব্যবহার করা হয়।

Graphics ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:

  1. drawLine(int x1, int y1, int x2, int y2):
    • এটি দুটি পয়েন্টের মধ্যে একটি লাইন আঁকতে ব্যবহৃত হয়।
  2. drawRect(int x, int y, int width, int height):
    • এটি একটি রেকটেঙ্গুলার বা আয়তাকার আকার আঁকতে ব্যবহৃত হয়।
  3. fillRect(int x, int y, int width, int height):
    • এটি একটি পূর্ণ আয়তাকার আঁকতে ব্যবহৃত হয় (ফিলড রেকটেঙ্গুলার)।
  4. drawOval(int x, int y, int width, int height):
    • এটি একটি আন্ডারকাট বা এলিপটিক্যাল আকার আঁকতে ব্যবহৃত হয়।
  5. fillOval(int x, int y, int width, int height):
    • এটি একটি পূর্ণ এলিপ্স বা বৃত্ত আঁকতে ব্যবহৃত হয়।
  6. drawString(String str, int x, int y):
    • এটি একটি স্ট্রিং আঁকতে ব্যবহৃত হয়।
  7. setColor(Color c):
    • এটি গ্রাফিক্স ড্রইং-এর জন্য রঙ পরিবর্তন করতে ব্যবহৃত হয়।
  8. setFont(Font f):
    • এটি টেক্সটের ফন্ট সেট করার জন্য ব্যবহৃত হয়।

AWT Graphics এবং Drawing-এ প্রাথমিক ব্যবহার:

AWT-তে গ্রাফিক্স আঁকানোর জন্য সাধারণত একটি কাস্টম পেইন্টিং ক্লাস তৈরি করা হয় যা paint() মেথডকে ওভাররাইড করে এবং এর মধ্যে Graphics অবজেক্ট ব্যবহার করা হয়।

উদাহরণ: AWT Graphics ব্যবহার করে লাইন, রেকটাঙ্গল, বৃত্ত এবং টেক্সট আঁকানো

import java.awt.*;
import javax.swing.*;

public class GraphicsExample extends JPanel {
    
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        // লাইন আঁকা
        g.setColor(Color.RED);
        g.drawLine(50, 50, 200, 50);
        
        // রেকটেঙ্গল আঁকা
        g.setColor(Color.BLUE);
        g.drawRect(50, 100, 150, 75);
        
        // পূর্ণ রেকটেঙ্গল আঁকা
        g.setColor(Color.GREEN);
        g.fillRect(50, 200, 150, 75);
        
        // বৃত্ত আঁকা
        g.setColor(Color.MAGENTA);
        g.drawOval(250, 50, 100, 100);
        
        // পূর্ণ বৃত্ত আঁকা
        g.setColor(Color.ORANGE);
        g.fillOval(250, 200, 100, 100);
        
        // টেক্সট আঁকা
        g.setColor(Color.BLACK);
        g.setFont(new Font("Arial", Font.BOLD, 20));
        g.drawString("Hello, AWT Graphics!", 100, 350);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("AWT Graphics Example");
        GraphicsExample panel = new GraphicsExample();
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 500);
        frame.add(panel);
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • paintComponent(Graphics g): এখানে paintComponent() মেথডটি ওভাররাইড করা হয়েছে। এই মেথডে Graphics অবজেক্ট g ব্যবহার করা হয়েছে যা গ্রাফিক্যাল উপাদান আঁকানোর জন্য ব্যবহৃত।
  • drawLine(), drawRect(), fillRect(), drawOval(), fillOval(): এই মেথডগুলো বিভিন্ন গ্রাফিক্যাল উপাদান যেমন লাইন, রেকটেঙ্গল, বৃত্ত আঁকাতে ব্যবহৃত হয়েছে।
  • drawString(): টেক্সট আঁকাতে ব্যবহৃত।

AWT Graphics-এর অন্যান্য বৈশিষ্ট্য:

  1. Color ব্যবহার:
    • AWT-তে Color ক্লাস ব্যবহার করে আপনি বিভিন্ন রঙ নির্ধারণ করতে পারেন এবং এটি গ্রাফিক্স অবজেক্টে সেট করতে পারেন, যেমন: g.setColor(Color.RED)
  2. Font ব্যবহার:
    • গ্রাফিক্সে টেক্সট আঁকার সময় আপনি Font ক্লাস ব্যবহার করে ফন্ট এবং ফন্ট সাইজ পরিবর্তন করতে পারেন, যেমন: g.setFont(new Font("Arial", Font.BOLD, 20))
  3. রূপান্তর (Transformation):
    • গ্রাফিক্স অবজেক্টের উপর বিভিন্ন রূপান্তর যেমন স্কেলিং, রোটেশন, ট্রান্সলেশন করা যেতে পারে। এটি করতে Graphics2D ক্লাসের ব্যবহার হয়।

Graphics2D ক্লাস:

AWT-তে Graphics2D একটি শক্তিশালী ক্লাস যা 2D গ্রাফিক্সের জন্য আরও উন্নত ফিচার প্রদান করে, যেমন রোটেশন, স্কেলিং, ট্রান্সলেশন, স্ট্রোক প্রপার্টি সেট করা ইত্যাদি। এটি Graphics ক্লাসের একটি সাবক্লাস এবং আরও বিস্তারিত গ্রাফিক্স তৈরি করতে সাহায্য করে।

Graphics2D ব্যবহার:

import java.awt.*;
import java.awt.geom.*;

public class Graphics2DExample extends JPanel {
    
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;

        // রোটেশন প্রয়োগ করা
        g2d.setColor(Color.RED);
        g2d.rotate(Math.toRadians(45), 150, 150);  // 45 ডিগ্রি রোটেশন
        g2d.fillRect(100, 100, 100, 100);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Graphics2D Example");
        Graphics2DExample panel = new Graphics2DExample();
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.add(panel);
        frame.setVisible(true);
    }
}

AWT-তে Graphics এবং Graphics2D এর মাধ্যমে আপনি বিভিন্ন গ্রাফিক্যাল উপাদান যেমন লাইন, আয়তক্ষেত্র, বৃত্ত, টেক্সট ইত্যাদি তৈরি এবং আঁকাতে পারবেন। Graphics2D ক্লাস আরও উন্নত গ্রাফিক্যাল প্রক্রিয়াগুলির জন্য ব্যবহৃত হয় এবং AWT গ্রাফিক্সের মাধ্যমে 2D গ্রাফিক্স প্রোগ্রামিং একটি শক্তিশালী উপায়ে করা সম্ভব।

Content added By

AWT Graphics ক্লাস Java-তে 2D গ্রাফিক্স ড্রয়িংয়ের জন্য ব্যবহৃত হয়। এই ক্লাসটি ব্যবহার করে আপনি বিভিন্ন গ্রাফিক্যাল উপাদান (যেমন, রেখা, আয়তক্ষেত্র, বৃত্ত, টেক্সট ইত্যাদি) আঁকতে পারেন। Graphics ক্লাসটি Java AWT-এর অংশ এবং এটি paint() মেথডের মাধ্যমে গ্রাফিক্স ড্রয়িং-এর কাজ করে।

AWT Graphics ক্লাস দিয়ে ড্রয়িং শুরু করা:

Graphics ক্লাস-এর মধ্যে বিভিন্ন পদ্ধতি রয়েছে, যেগুলি ব্যবহার করে আপনি স্ক্রিনে ড্রয়িং করতে পারেন। এর মধ্যে সবচেয়ে গুরুত্বপূর্ণ পদ্ধতিগুলি হল:

  • drawLine()
  • drawRect()
  • drawOval()
  • drawString()
  • fillRect()
  • fillOval()

এগুলি ব্যবহার করে আপনি অঙ্কন এবং আকৃতি তৈরি করতে পারবেন।

ড্রয়িং শুরু করার জন্য সাধারণ পদক্ষেপ:

  1. Graphics অবজেক্ট পাওয়া: paint() মেথডের মাধ্যমে একটি Graphics অবজেক্ট পাওয়া যায়, যা ড্রয়িং অপারেশন পরিচালনা করতে ব্যবহৃত হয়।
  2. ড্রয়িং পদ্ধতি ব্যবহার: Graphics অবজেক্ট ব্যবহার করে বিভিন্ন গ্রাফিক্যাল উপাদান আঁকা হয়।

উদাহরণ: Graphics ক্লাস দিয়ে একটি রেখা, আয়তক্ষেত্র এবং বৃত্ত আঁকা

import java.awt.*;
import javax.swing.*;

public class DrawingExample extends JPanel {

    // paintComponent মেথডটি অঙ্কন করার জন্য override করা হয়
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);  // JPanel-এর paintComponent() মেথড কল করা
       
        // রেখা আঁকা (x1, y1, x2, y2)
        g.drawLine(50, 50, 200, 50);  // শুরু এবং শেষ পয়েন্ট নির্দেশক

        // আয়তক্ষেত্র আঁকা (x, y, প্রস্থ, উচ্চতা)
        g.drawRect(50, 100, 150, 100);  // আয়তক্ষেত্রের অবস্থান এবং আকার

        // বৃত্ত আঁকা (x, y, প্রস্থ, উচ্চতা)
        g.drawOval(50, 250, 100, 100);  // বৃত্তের অবস্থান এবং আকার

        // টেক্সট আঁকা
        g.drawString("Hello, AWT!", 50, 400);  // টেক্সট এবং এর অবস্থান
    }

    public static void main(String[] args) {
        // JFrame তৈরি করা এবং সেট আপ করা
        JFrame frame = new JFrame("AWT Graphics Example");
        DrawingExample panel = new DrawingExample();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 500);
        frame.add(panel);  // JPanel যুক্ত করা JFrame-এর সাথে
        frame.setVisible(true);  // JFrame দৃশ্যমান করা
    }
}

ব্যাখ্যা:

  1. paintComponent() মেথড: এখানে paintComponent() মেথডটি অঙ্কন করার জন্য উপযোগী করা হয়েছে। এটি Graphics অবজেক্টটি প্যারামিটার হিসেবে গ্রহণ করে। এই পদ্ধতি অটোমেটিক্যালি ডাকা হয় যখন আপনার GUI-তে কিছু পরিবর্তন হয়, যেমন উইন্ডো রিসাইজ করা বা পুনরায় আনা।
  2. Graphics অবজেক্ট: Graphics অবজেক্ট (এখানে g) ব্যবহার করে আমরা বিভিন্ন ড্রয়িং অপারেশন করতে পারি, যেমন রেখা, আয়তক্ষেত্র, বৃত্ত, এবং টেক্সট।
  3. drawLine(): এটি একটি রেখা আঁকতে ব্যবহৃত হয় যেখানে শুরু এবং শেষ পয়েন্ট দেওয়া হয়। এখানে রেখাটি (50, 50) থেকে (200, 50) পর্যন্ত আঁকা হয়েছে।
  4. drawRect(): এটি একটি আয়তক্ষেত্র আঁকতে ব্যবহৃত হয়। এখানে আয়তক্ষেত্রটির শীর্ষ বাম কোন (50, 100) এবং এর আয়তন 150x100 পিক্সেল।
  5. drawOval(): এটি একটি বৃত্ত আঁকতে ব্যবহৃত হয়, তবে এটি আসলে একটি ডিম্বাকৃতির (ellipse) আঁকার জন্যও ব্যবহৃত হয়। এর আয়তন এবং অবস্থান (50, 250) থেকে শুরু হয়ে 100x100 পিক্সেল পর্যন্ত।
  6. drawString(): এটি স্ক্রীনে টেক্সট আঁকতে ব্যবহৃত হয়। এখানে "Hello, AWT!" টেক্সটটি (50, 400) পয়েন্টে আঁকা হয়েছে।

গ্রাফিক্স ড্রয়িং সম্পর্কিত অতিরিক্ত পদ্ধতি:

  • fillRect(x, y, width, height): আয়তক্ষেত্র পূর্ণ (filled) আঁকা।
  • fillOval(x, y, width, height): বৃত্ত বা ডিম্বাকৃতি পূর্ণ (filled) আঁকা।
  • setColor(Color c): গ্রাফিক্সে রঙ পরিবর্তন করা। উদাহরণ: g.setColor(Color.RED);

উদাহরণ:

g.setColor(Color.RED);  // রঙ পরিবর্তন
g.fillRect(100, 100, 150, 100);  // পূর্ণ আয়তক্ষেত্র

AWT Graphics ক্লাসের মাধ্যমে সহজেই গ্রাফিক্স তৈরি করা যায়, যেমন রেখা, আয়তক্ষেত্র, বৃত্ত, টেক্সট ইত্যাদি। এটি Java-তে GUI অ্যাপ্লিকেশন ডিজাইন করতে ব্যবহৃত হয় এবং অঙ্কনের জন্য Graphics অবজেক্ট ব্যবহার করা হয় যা paintComponent() মেথডে পাওয়া যায়।

Content added By

AWT (Abstract Window Toolkit)-এ Shapes এবং Primitive Figures (যেমন Rectangle, Oval, Line) আঁকার জন্য Graphics ক্লাস ব্যবহার করা হয়। Graphics ক্লাসের বিভিন্ন মেথডের মাধ্যমে আমরা বিভিন্ন ধরনের আকার আঁকতে পারি, যেমন আয়তক্ষেত্র, বৃত্ত, এবং রেখা।

1. Rectangle (আয়তক্ষেত্র) আঁকা

Rectangle আঁকতে Graphics ক্লাসের drawRect() এবং fillRect() মেথড ব্যবহার করা হয়।

  • drawRect(x, y, width, height): আয়তক্ষেত্রের আউটলাইন আঁকবে।
  • fillRect(x, y, width, height): আয়তক্ষেত্রটি পূর্ণ করবে।

উদাহরণ:

import java.awt.*;
import javax.swing.*;

public class RectangleExample extends JPanel {
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        // আয়তক্ষেত্র আঁকা
        g.setColor(Color.BLUE);  // রঙ সেট করা
        g.drawRect(50, 50, 200, 100);  // আউটলাইন আঁকা
        g.setColor(Color.RED);   // রঙ পরিবর্তন
        g.fillRect(50, 200, 200, 100);  // পূর্ণ আয়তক্ষেত্র আঁকা
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Rectangle Example");
        RectangleExample panel = new RectangleExample();
        frame.add(panel);
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

এখানে, প্রথম আয়তক্ষেত্রের আউটলাইন আঁকা হয়েছে এবং পরবর্তী আয়তক্ষেত্রটি পূর্ণ করা হয়েছে।

2. Oval (বৃত্ত বা গোলাকৃতি) আঁকা

Oval আঁকতে Graphics ক্লাসের drawOval() এবং fillOval() মেথড ব্যবহার করা হয়।

  • drawOval(x, y, width, height): একটি বৃত্ত বা গোলাকার আকারের আউটলাইন আঁকবে।
  • fillOval(x, y, width, height): বৃত্তটি পূর্ণ করবে।

উদাহরণ:

import java.awt.*;
import javax.swing.*;

public class OvalExample extends JPanel {
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        // বৃত্ত আঁকা
        g.setColor(Color.GREEN);  // রঙ সেট করা
        g.drawOval(50, 50, 150, 150);  // আউটলাইন আঁকা
        g.setColor(Color.YELLOW);  // রঙ পরিবর্তন
        g.fillOval(50, 200, 150, 150);  // পূর্ণ বৃত্ত আঁকা
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Oval Example");
        OvalExample panel = new OvalExample();
        frame.add(panel);
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

এখানে, প্রথমে একটি বৃত্তের আউটলাইন আঁকা হয়েছে এবং পরবর্তী বৃত্তটি পূর্ণ করা হয়েছে।

3. Line (রেখা) আঁকা

Line আঁকতে Graphics ক্লাসের drawLine() মেথড ব্যবহার করা হয়। এটি দুটি পয়েন্টের মধ্যে একটি রেখা আঁকতে সাহায্য করে।

উদাহরণ:

import java.awt.*;
import javax.swing.*;

public class LineExample extends JPanel {
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        // রেখা আঁকা
        g.setColor(Color.BLACK);  // রঙ সেট করা
        g.drawLine(50, 50, 250, 50);  // একটি সরল রেখা আঁকা
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Line Example");
        LineExample panel = new LineExample();
        frame.add(panel);
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

এখানে, একটি সরল রেখা আঁকা হয়েছে যা (50, 50) থেকে (250, 50) পর্যন্ত চলে।


সারাংশ:

  • Rectangle: drawRect() এবং fillRect() মেথডের মাধ্যমে আয়তক্ষেত্র আঁকা যায়।
  • Oval: drawOval() এবং fillOval() মেথডের মাধ্যমে বৃত্ত বা গোলাকার আকার আঁকা যায়।
  • Line: drawLine() মেথডের মাধ্যমে দুটি পয়েন্টের মধ্যে রেখা আঁকা যায়।

AWT-এ এই প্রিমিটিভ ফিগারগুলি আঁকতে Graphics ক্লাসের মেথডগুলো ব্যবহৃত হয়। প্রতিটি ফিগারের জন্য আপনি আউটলাইন অথবা পূর্ণ আকারের আঁকা নির্বাচন করতে পারেন।

Content added By

AWT (Abstract Window Toolkit) এ Color এবং Font ম্যানেজমেন্ট খুবই গুরুত্বপূর্ণ, কারণ এগুলি গ্রাফিকাল ইউজার ইন্টারফেস (GUI) উপাদানগুলির দৃশ্যমানতা এবং অভিজ্ঞতাকে সরাসরি প্রভাবিত করে। Color এবং Font এর সঠিক ব্যবহার GUI-কে আরও সুন্দর এবং ব্যবহারকারী-বান্ধব করে তোলে।

১. Color ম্যানেজমেন্ট:

AWT তে Color ব্যবহারের জন্য Color ক্লাস ব্যবহার করা হয়। Color ক্লাসটি বিভিন্ন প্রিসেট রঙ যেমন Color.RED, Color.GREEN, ইত্যাদি সরবরাহ করে এবং আপনি নিজে নতুন রঙও তৈরি করতে পারেন RGB (Red, Green, Blue) মান দিয়ে।

Color ক্লাসের মূল বৈশিষ্ট্য:

  • Predefined Colors: Color ক্লাসে বিভিন্ন প্রিসেট রঙ থাকে, যেমন:
    • Color.RED, Color.GREEN, Color.BLUE, Color.BLACK, Color.WHITE, ইত্যাদি।
  • Custom Colors: আপনি RGB বা HSB মান দিয়ে কাস্টম রঙ তৈরি করতে পারেন।
    • new Color(int r, int g, int b): এখানে R, G, এবং B হল রঙের লাল, সবুজ এবং নীল উপাদানগুলোর মান (0 থেকে 255 এর মধ্যে)।
    • new Color(float r, float g, float b) : আপনি RGB রঙের মান 0.0 থেকে 1.0 এর মধ্যে ব্যবহার করতে পারেন।

Color উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class ColorExample {
    public static void main(String[] args) {
        Frame frame = new Frame("Color Example");
        
        // Set the background color of the frame
        frame.setBackground(Color.CYAN);

        Button button = new Button("Click Me");

        // Set button's foreground color (text color)
        button.setForeground(Color.WHITE);
        
        // Set button's background color
        button.setBackground(Color.RED);

        frame.add(button);
        frame.setSize(400, 300);
        frame.setVisible(true);
        
        // Close the frame when clicked on close button
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });
    }
}

ব্যাখ্যা:

  • এখানে frame.setBackground(Color.CYAN) দিয়ে ফ্রেমের ব্যাকগ্রাউন্ড রঙ সায়ান সেট করা হয়েছে।
  • button.setForeground(Color.WHITE) দিয়ে বোতামের টেক্সটের রঙ সাদা করা হয়েছে।
  • button.setBackground(Color.RED) দিয়ে বোতামের ব্যাকগ্রাউন্ড রঙ লাল করা হয়েছে।

২. Font ম্যানেজমেন্ট:

AWT তে Font ম্যানেজমেন্টের জন্য Font ক্লাস ব্যবহার করা হয়। Font ক্লাসের মাধ্যমে আপনি টেক্সটের ফন্ট, আকার (size), এবং শৈলী (style) কাস্টমাইজ করতে পারেন।

Font ক্লাসের প্রধান বৈশিষ্ট্য:

  • Font Constructor:
    • Font(String name, int style, int size)
      name হলো ফন্টের নাম (যেমন Arial, Times New Roman), style হলো ফন্টের শৈলী (যেমন Font.PLAIN, Font.BOLD, Font.ITALIC), এবং size হলো ফন্টের আকার (পিক্সেলে)।
  • Font Style:
    • Font.PLAIN: সাধারণ ফন্ট
    • Font.BOLD: মোটা ফন্ট
    • Font.ITALIC: তির্যক ফন্ট
    • Font.BOLD + Font.ITALIC: মোটা এবং তির্যক ফন্ট

Font উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class FontExample {
    public static void main(String[] args) {
        Frame frame = new Frame("Font Example");
        
        // Create a label with custom font
        Label label = new Label("Hello, AWT!");
        
        // Create a font: Arial, Bold, Size 24
        Font font = new Font("Arial", Font.BOLD, 24);
        label.setFont(font);

        frame.add(label);
        frame.setSize(400, 200);
        frame.setVisible(true);
        
        // Close the frame when clicked on close button
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });
    }
}

ব্যাখ্যা:

  • এখানে একটি লেবেল তৈরি করা হয়েছে, এবং সেটির ফন্টটি Arial, Bold, এবং আকার ২৪ পিক্সেল দেওয়া হয়েছে।

Color এবং Font ম্যানেজমেন্ট একত্রে ব্যবহারের উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class ColorAndFontExample {
    public static void main(String[] args) {
        Frame frame = new Frame("Color and Font Example");

        // Create a label with custom font and color
        Label label = new Label("Welcome to AWT!");
        
        // Set the font
        Font font = new Font("Verdana", Font.BOLD + Font.ITALIC, 30);
        label.setFont(font);
        
        // Set the text color
        label.setForeground(Color.BLUE);
        
        // Set the background color
        label.setBackground(Color.YELLOW);

        frame.add(label);
        frame.setSize(500, 300);
        frame.setVisible(true);
        
        // Close the frame when clicked on close button
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });
    }
}

ব্যাখ্যা:

  • এখানে লেবেলের ফন্ট Verdana, মোটা এবং তির্যক (Bold and Italic) করা হয়েছে, আকার ৩০ পিক্সেল।
  • লেবেলের টেক্সট রঙ নীল এবং ব্যাকগ্রাউন্ড রঙ হলুদ সেট করা হয়েছে।

সারাংশ:

  • Color: AWT তে রঙ নিয়ন্ত্রণ করার জন্য Color ক্লাস ব্যবহৃত হয়, যা আপনি প্রিসেট রঙ বা কাস্টম RGB মান দিয়ে কাস্টমাইজ করতে পারেন।
  • Font: Font ক্লাসটি টেক্সটের ফন্ট, শৈলী এবং আকার নির্ধারণ করতে ব্যবহৃত হয়। আপনি বিভিন্ন ফন্ট শৈলী যেমন Bold, Italic এবং Plain ব্যবহার করতে পারেন।

এই দুটি উপাদান GUI ডিজাইনে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, এবং সঠিকভাবে ব্যবহৃত হলে অ্যাপ্লিকেশনটির ইউজার ইন্টারফেস অনেক বেশি আকর্ষণীয় এবং ব্যবহারে সহজ হয়ে ওঠে।

Content added By

AWT (Abstract Window Toolkit) এ Custom Drawing এবং Painting Techniques ব্যবহার করা খুবই সাধারণ, যেখানে আপনি কাস্টম গ্রাফিক্স তৈরি করতে পারেন, যেমন শেপ, লাইন, টেক্সট, বা ছবি। এই কাজের জন্য Graphics ক্লাসটি ব্যবহৃত হয়, যা বিভিন্ন গ্রাফিক্যাল অউটপুট (যেমন শেপ, টেক্সট, ছবি, ইত্যাদি) তৈরি করার জন্য প্রয়োজনীয় মেথড সরবরাহ করে।

AWT তে কাস্টম ড্রয়িং করার জন্য, আপনি সাধারণত paint() অথবা paintComponent() মেথডকে ওভাররাইড করবেন। এই মেথডে আপনি আপনার গ্রাফিক্স কনটেন্ট ড্রয়িং করবেন।

Custom Drawing Techniques:

১. paint() মেথড ব্যবহার করে কাস্টম ড্রয়িং

AWT তে কাস্টম ড্রয়িং করার জন্য সাধারণত Canvas বা Panel এর paint() মেথড ব্যবহার করা হয়। এই মেথডে Graphics অবজেক্ট পাস করা হয়, যার মাধ্যমে আপনি বিভিন্ন গ্রাফিক্যাল উপাদান ড্রয়িং করতে পারেন।

উদাহরণ:

import java.awt.*;

public class CustomDrawingExample {
    public static void main(String[] args) {
        Frame frame = new Frame("AWT Custom Drawing");

        // Create a Canvas to draw custom graphics
        Canvas canvas = new Canvas() {
            public void paint(Graphics g) {
                // Set color for drawing
                g.setColor(Color.BLUE);
                
                // Draw a line
                g.drawLine(50, 50, 200, 50);

                // Draw a rectangle
                g.setColor(Color.RED);
                g.fillRect(50, 100, 150, 100);

                // Draw an oval
                g.setColor(Color.GREEN);
                g.fillOval(50, 250, 150, 100);

                // Draw text
                g.setColor(Color.BLACK);
                g.drawString("AWT Custom Drawing", 50, 400);
            }
        };

        // Set Canvas size and add to the Frame
        canvas.setSize(400, 500);
        frame.add(canvas);

        // Frame settings
        frame.setSize(400, 500);
        frame.setVisible(true);

        // Close window action
        frame.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent we) {
                System.exit(0);
            }
        });
    }
}

ব্যাখ্যা:

  • এখানে Canvas ক্লাসের paint() মেথডটি ওভাররাইড করা হয়েছে। এই মেথডে আমরা Graphics অবজেক্ট ব্যবহার করে বিভিন্ন শেপ যেমন লাইন, আয়তক্ষেত্র, বৃত্ত এবং টেক্সট ড্রয়িং করেছি।
  • Graphics.setColor() মেথড ব্যবহার করে আমরা ড্রইংয়ের জন্য রঙ নির্ধারণ করেছি।

২. Double Buffering ব্যবহার করা

একটি সাধারণ সমস্যা হল গ্রাফিক্স ড্রয়িং করার সময় স্ক্রীনে ঝাপসা বা ফ্লিকারিং দেখা দেয়। এর জন্য Double Buffering ব্যবহার করা হয়, যেখানে গ্রাফিক্স প্রথমে একটি buffered image-এ আঁকা হয় এবং পরে একবারে স্ক্রীনে দেখা যায়।

AWT তে ডাবল বাফারিং করার জন্য আপনি BufferStrategy ব্যবহার করতে পারেন। তবে, সাধারণ কাস্টম ড্রয়িংয়ের ক্ষেত্রে ডাবল বাফারিং ম্যানুয়ালি করা যায়। নিচে একটি উদাহরণ দেওয়া হলো:

Double Buffering উদাহরণ:

import java.awt.*;
import java.awt.image.BufferStrategy;

public class DoubleBufferingExample extends Canvas {
    public void paint(Graphics g) {
        // Get the buffer strategy
        BufferStrategy strategy = getBufferStrategy();

        if (strategy == null) {
            createBufferStrategy(2); // Create a double-buffered strategy
            return;
        }

        // Get the Graphics object from the back buffer
        Graphics2D g2d = (Graphics2D) strategy.getDrawGraphics();

        // Set the background color
        g2d.setColor(Color.WHITE);
        g2d.fillRect(0, 0, getWidth(), getHeight());

        // Custom drawing
        g2d.setColor(Color.BLUE);
        g2d.fillOval(50, 50, 150, 100);

        // Complete drawing
        g2d.dispose();

        // Show the back buffer on the screen
        strategy.show();
    }

    public static void main(String[] args) {
        Frame frame = new Frame("AWT Double Buffering Example");

        DoubleBufferingExample canvas = new DoubleBufferingExample();
        frame.add(canvas);

        frame.setSize(400, 400);
        frame.setVisible(true);

        // Close window action
        frame.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent we) {
                System.exit(0);
            }
        });

        canvas.createBufferStrategy(2); // Create double buffer strategy
    }
}

ব্যাখ্যা:

  • এখানে ডাবল বাফারিং ব্যবহার করে কাস্টম ড্রইং করা হয়েছে। প্রথমে back buffer-এ আঁকা হচ্ছে এবং পরে একবারে স্ক্রীনে দেখানো হচ্ছে, যা স্ক্রীনের ঝাপসা দূর করে।
  • createBufferStrategy(2) দিয়ে ডাবল বাফারিং চালু করা হয়েছে।

৩. কাস্টম গ্রাফিক্স শেপস এবং টেক্সট

AWT তে গ্রাফিক্সের জন্য বিভিন্ন স্ট্যান্ডার্ড শেপ এবং টেক্সট ড্রয়িং মেথড রয়েছে:

  • drawLine(x1, y1, x2, y2): দুটি পয়েন্টের মধ্যে একটি রেখা আঁকা।
  • drawRect(x, y, width, height): একটি আয়তক্ষেত্র আঁকা (সীমারেখা সহ)।
  • fillRect(x, y, width, height): আয়তক্ষেত্র পূর্ণভাবে আঁকা।
  • drawOval(x, y, width, height): একটি বৃত্তের আউটলাইন আঁকা।
  • fillOval(x, y, width, height): বৃত্ত পূর্ণভাবে আঁকা।
  • drawString(string, x, y): একটি স্ট্রিং টেক্সট ড্রয়িং করা।

উদাহরণ:

import java.awt.*;

public class ShapeTextDrawing {
    public static void main(String[] args) {
        Frame frame = new Frame("Shape and Text Drawing");

        // Create a Canvas to draw custom graphics
        Canvas canvas = new Canvas() {
            public void paint(Graphics g) {
                // Draw some custom shapes and text
                g.setColor(Color.RED);
                g.drawRect(50, 50, 200, 100);  // Rectangle Outline
                g.fillRect(50, 200, 200, 100); // Filled Rectangle

                g.setColor(Color.GREEN);
                g.drawOval(50, 350, 200, 100);  // Oval Outline
                g.fillOval(50, 500, 200, 100);  // Filled Oval

                g.setColor(Color.BLACK);
                g.drawString("Custom Drawing in AWT", 50, 650); // Text Drawing
            }
        };

        // Set Canvas size and add to the Frame
        canvas.setSize(300, 700);
        frame.add(canvas);

        // Frame settings
        frame.setSize(400, 700);
        frame.setVisible(true);

        // Close window action
        frame.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent we) {
                System.exit(0);
            }
        });
    }
}

৪. Advanced Techniques (Images, Gradients, etc.)

AWT-তে images এবং gradients ড্রইং করা যায়। যেমন:

  • Images: drawImage() মেথড ব্যবহার করে ছবি আঁকা যেতে পারে।
  • Gradients: Graphics2D ব্যবহার করে গ্রেডিয়েন্ট পেইন্টিং করা যেতে পারে, যেমন linear gradient বা radial gradient
import java.awt.*;
import java.awt.event.*;

public class ImageAndGradientExample extends Canvas {
    public void paint(Graphics g) {
        // Use Graphics2D for advanced techniques
        Graphics2D g2d = (Graphics2D) g;

        // Draw Image (Make sure to load your image)
        Image img = Toolkit.getDefaultToolkit().getImage("path/to/image.jpg");
        g.drawImage(img, 50, 50, this);

        // Gradient Example
        GradientPaint gradient = new GradientPaint(50, 200, Color.RED, 200, 200, Color.YELLOW);
        g2d.setPaint(gradient);
        g2d.fillRect(50, 200, 200, 100);
    }

    public static void main(String[] args) {
        Frame frame = new Frame("AWT Image and Gradient Example");

        ImageAndGradientExample canvas = new ImageAndGradientExample();
        frame.add(canvas);

        frame.setSize(400, 400);
        frame.setVisible(true);

        // Close window action
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });
    }
}

ব্যাখ্যা:

  • এখানে একটি ইমেজ এবং gradient ব্যবহার করা হয়েছে Graphics2D এবং GradientPaint এর মাধ্যমে।

AWT তে কাস্টম ড্রয়িং করার জন্য Graphics ক্লাসের বিভিন্ন মেথড ব্যবহার করতে পারেন যেমন শেপ, টেক্সট, ছবি, এবং গ্রেডিয়েন্ট পেইন্টিং। এছাড়া ডাবল বাফারিং বা অ্যানিমেশন করতে চাইলে BufferStrategy ব্যবহার করা যায়। AWT তে স্টাইলিং এবং গ্রাফিক্সের ক্ষেত্রে কিছু সীমাবদ্ধতা থাকতে পারে, তবে আপনি সৃজনশীলভাবে বিভিন্ন গ্রাফিক্যাল এলিমেন্ট তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...