JavaFX Graphics এবং Shapes ব্যবহার করে আপনি গ্রাফিক্যাল ইউজার ইন্টারফেসে বিভিন্ন ধরনের 2D গ্রাফিক্স তৈরি করতে পারেন। JavaFX গ্রাফিক্স ক্লাসগুলি UI উপাদানগুলির জন্য গ্রাফিক্স এবং শেপ তৈরি করার একটি শক্তিশালী ফিচার সরবরাহ করে। এখানে Shapes হল 2D জ্যামিতিক আকৃতিগুলি (যেমন রেকটাঙ্গল, সার্কেল, লাইন ইত্যাদি), যেগুলি JavaFX এর গ্রাফিক্স API ব্যবহার করে সহজে তৈরি করা যায়।
JavaFX Graphics এবং Shapes
JavaFX গ্রাফিক্সের মূল উপাদানগুলির মধ্যে রয়েছে:
- Shape: 2D আকৃতি (যেমন রেকটাঙ্গল, সার্কেল, ইত্যাদি) তৈরি করার জন্য একটি সাধারণ ক্লাস।
- Path: কাস্টম পথ আঁকার জন্য ব্যবহৃত হয় (যেমন ফ্রি-ফর্ম শেপ)।
- Canvas: গ্রাফিক্স আঁকার জন্য একটি ক্যানভাস যেখানে আপনি ড্রয়িং অপারেশন করতে পারেন।
- GraphicsContext: ক্যানভাসে গ্রাফিক্স আঁকতে ব্যবহৃত হয়।
১. Basic Shapes in JavaFX
JavaFX এর মধ্যে কিছু সাধারণ শেপ রয়েছে, যেমন Rectangle, Circle, Line, Ellipse, ইত্যাদি। এখানে প্রতিটি শেপ কিভাবে তৈরি করতে হয় তা দেখানো হয়েছে।
উদাহরণ: Basic Shapes in JavaFX
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Line;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JavaFXShapesExample extends Application {
@Override
public void start(Stage primaryStage) {
// রেকটাঙ্গল তৈরি
Rectangle rectangle = new Rectangle(100, 100, 200, 150);
rectangle.setFill(Color.GREEN);
// সার্কেল তৈরি
Circle circle = new Circle(150, 150, 50);
circle.setFill(Color.RED);
// লাইন তৈরি
Line line = new Line(50, 50, 250, 50);
line.setStroke(Color.BLUE);
line.setStrokeWidth(2);
// লেআউট তৈরি এবং উপাদান যোগ করা
StackPane root = new StackPane();
root.getChildren().addAll(rectangle, circle, line);
// Scene তৈরি করা
Scene scene = new Scene(root, 400, 400);
primaryStage.setTitle("JavaFX Graphics and Shapes");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- Rectangle:
new Rectangle(100, 100, 200, 150)— এটি একটি ২০০x১৫০ আকারের রেকটাঙ্গল তৈরি করবে যা (100, 100) পজিশনে থাকবে।setFill()দিয়ে এর রঙ সেট করা হয়েছে। - Circle:
new Circle(150, 150, 50)— এটি একটি রেড কালারের সার্কেল তৈরি করবে যার রেডিয়াস ৫০। - Line:
new Line(50, 50, 250, 50)— এটি একটি ব্লু রঙের লাইন তৈরি করবে যা (50, 50) থেকে (250, 50) পয়েন্ট পর্যন্ত যাবে।setStroke()দিয়ে এর রঙ এবংsetStrokeWidth()দিয়ে লাইনটির প্রস্থ নির্ধারণ করা হয়েছে।
২. Path and Custom Shapes
JavaFX-এ Path ব্যবহার করে কাস্টম শেপ আঁকা সম্ভব। এটি আপনি যে কোনো ফ্রি-ফর্ম আকৃতি আঁকতে পারেন যেমন একটি জটিল পাথ বা আকৃতি।
উদাহরণ: Path (Custom Shape)
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Path;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.LineTo;
import javafx.stage.Stage;
public class JavaFXPathExample extends Application {
@Override
public void start(Stage primaryStage) {
// Path তৈরি করা
Path path = new Path();
path.getElements().add(new MoveTo(50, 50)); // Path শুরু পয়েন্ট
path.getElements().add(new LineTo(200, 50)); // একে একে লাইন যুক্ত করা
path.getElements().add(new LineTo(200, 200));
path.getElements().add(new LineTo(50, 200));
path.getElements().add(new LineTo(50, 50)); // Path শেষ পয়েন্ট
path.setFill(Color.TRANSPARENT);
path.setStroke(Color.PURPLE);
path.setStrokeWidth(3);
// লেআউট এবং উপাদান যোগ করা
StackPane root = new StackPane();
root.getChildren().add(path);
// Scene তৈরি করা
Scene scene = new Scene(root, 300, 300);
primaryStage.setTitle("JavaFX Path Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- MoveTo(x, y): এটি পাথের প্রথম পয়েন্ট (স্টার্ট পয়েন্ট) নির্ধারণ করে।
- LineTo(x, y): এই পদ্ধতিটি পাথের মধ্যে পরবর্তী পয়েন্ট যোগ করে।
- Path কে কাস্টম শেপ তৈরি করার জন্য ব্যবহৃত হয়। এখানে একটি সোজা সাইনপোস্টের মতো রূপান্তরিত একটি পাথ আঁকা হয়েছে।
৩. Canvas and GraphicsContext
Canvas একটি বিশেষ গ্রাফিক্স উপাদান যা আপনাকে কাস্টম ড্রইং করতে দেয়। আপনি GraphicsContext ব্যবহার করে Canvas তে শেপ আঁকতে পারেন।
উদাহরণ: Canvas and GraphicsContext
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JavaFXCanvasExample extends Application {
@Override
public void start(Stage primaryStage) {
// Canvas তৈরি করা
Canvas canvas = new Canvas(400, 400);
GraphicsContext gc = canvas.getGraphicsContext2D();
// GraphicsContext দিয়ে ড্রইং করা
gc.setFill(Color.BLUE);
gc.fillRect(50, 50, 200, 150); // Rectangle
gc.setStroke(Color.RED);
gc.strokeLine(50, 50, 250, 200); // Line
gc.setFill(Color.GREEN);
gc.fillOval(100, 100, 100, 100); // Circle
// StackPane layout তৈরি করা
StackPane root = new StackPane();
root.getChildren().add(canvas);
// Scene তৈরি করা
Scene scene = new Scene(root, 400, 400);
primaryStage.setTitle("Canvas and GraphicsContext Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- Canvas: এটি একটি প্যাড যা আপনি কাস্টম গ্রাফিক্স আঁকার জন্য ব্যবহার করতে পারেন।
- GraphicsContext: এটি ক্যানভাসে গ্রাফিক্স আঁকার জন্য ব্যবহৃত হয়। আপনি
setFill(),fillRect(),strokeLine(), ইত্যাদি পদ্ধতি ব্যবহার করতে পারেন ক্যানভাসে শেপ আঁকতে।
৪. JavaFX Shapes Properties
JavaFX Shapes এর কিছু সাধারণ প্রপার্টি রয়েছে, যা ব্যবহার করে আপনি শেপের বিভিন্ন বৈশিষ্ট্য কাস্টমাইজ করতে পারেন:
- Fill: শেপের ভিতরের রঙ (যেমন, রঙ, গ্র্যাডিয়েন্ট ইত্যাদি)।
- Stroke: শেপের বাইরের সীমানা বা আউটলাইন রঙ।
- StrokeWidth: আউটলাইনের প্রস্থ।
- Opacity: শেপের স্বচ্ছতা।
সারাংশ:
JavaFX গ্রাফিক্স এবং শেপের মাধ্যমে আপনি বিভিন্ন ধরনের 2D শেপ যেমন রেকটাঙ্গল, সার্কেল, লাইন, এলিপ্স ইত্যাদি তৈরি করতে পারেন এবং কাস্টম শেপ, ক্যানভাস, এবং পাথের মাধ্যমে আরও উন্নত গ্রাফিক্স তৈরি করতে পারেন। JavaFX-এর Canvas এবং GraphicsContext ব্যবহার করে কাস্টম ড্রইং করা যায়, এবং CSS দিয়ে শেপগুলোর চেহারা কাস্টমাইজ করা যায়।
JavaFX তে 2D Shapes ব্যবহার করে সহজেই গ্রাফিক্স তৈরি করা যায়, যেমন Line, Rectangle, Circle, Ellipse, এবং Polygon। JavaFX বিভিন্ন ধরনের শেপ সরবরাহ করে, যা অ্যাপ্লিকেশনের UI তে গ্রাফিক্যাল উপাদান হিসেবে ব্যবহার করা যেতে পারে।
এই শেপগুলোকে javafx.scene.shape প্যাকেজে পাওয়া যায় এবং JavaFX এর Scene-এর অংশ হিসেবে ইউজার ইন্টারফেসে যোগ করা যায়।
1. Line
Line শেপটি দুটি পয়েন্টের মধ্যে একটি সরলরেখা আঁকার জন্য ব্যবহৃত হয়।
উদাহরণ: Line ব্যবহার
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
public class LineExample extends Application {
@Override
public void start(Stage primaryStage) {
Line line = new Line();
line.setStartX(50);
line.setStartY(50);
line.setEndX(250);
line.setEndY(250);
line.setStroke(Color.BLUE); // রঙ সেট করা
StackPane root = new StackPane();
root.getChildren().add(line);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Line Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
Lineঅবজেক্ট তৈরি করা হয়েছে, যেখানেsetStartX,setStartY,setEndX, এবংsetEndYমেথড ব্যবহার করে লাইনটির শুরু এবং শেষ পয়েন্ট নির্ধারণ করা হয়েছে।setStroke()মেথড দিয়ে লাইনটির রঙ সেট করা হয়েছে।
2. Rectangle
Rectangle শেপটি একটি আয়তক্ষেত্র তৈরি করার জন্য ব্যবহৃত হয়।
উদাহরণ: Rectangle ব্যবহার
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class RectangleExample extends Application {
@Override
public void start(Stage primaryStage) {
Rectangle rectangle = new Rectangle(100, 50); // আয়তক্ষেত্রের আকার
rectangle.setFill(Color.GREEN); // ভেতরের রঙ সেট করা
rectangle.setStroke(Color.BLACK); // বাহিরের রঙ সেট করা
StackPane root = new StackPane();
root.getChildren().add(rectangle);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Rectangle Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
Rectangleঅবজেক্ট তৈরি করা হয়েছে এবং এর আকার নির্ধারণ করা হয়েছে (100x50 পিক্সেল)।setFill()এবংsetStroke()মেথড ব্যবহার করে আয়তক্ষেত্রের ভেতরের এবং বাইরের রঙ নির্ধারণ করা হয়েছে।
3. Circle
Circle শেপটি একটি বৃত্ত তৈরি করার জন্য ব্যবহৃত হয়।
উদাহরণ: Circle ব্যবহার
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class CircleExample extends Application {
@Override
public void start(Stage primaryStage) {
Circle circle = new Circle(50); // বৃত্তের ব্যাসার্ধ 50 পিক্সেল
circle.setFill(Color.RED); // বৃত্তের ভেতরের রঙ
circle.setStroke(Color.BLACK); // বৃত্তের বাইরের রঙ
StackPane root = new StackPane();
root.getChildren().add(circle);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Circle Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
Circleঅবজেক্ট তৈরি করা হয়েছে, যেখানে50পিক্সেল ব্যাসার্ধ দেওয়া হয়েছে।setFill()এবংsetStroke()মেথড ব্যবহার করে বৃত্তের ভেতরের এবং বাইরের রঙ নির্ধারণ করা হয়েছে।
4. Ellipse
Ellipse শেপটি একটি ডিম্বাকার (ellipse) আকার তৈরি করার জন্য ব্যবহৃত হয়।
উদাহরণ: Ellipse ব্যবহার
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import javafx.stage.Stage;
public class EllipseExample extends Application {
@Override
public void start(Stage primaryStage) {
Ellipse ellipse = new Ellipse(150, 75); // এলিপসের অক্ষের আকার
ellipse.setFill(Color.YELLOW); // এলিপসের ভেতরের রঙ
ellipse.setStroke(Color.BLUE); // এলিপসের বাইরের রঙ
StackPane root = new StackPane();
root.getChildren().add(ellipse);
Scene scene = new Scene(root, 400, 300);
primaryStage.setTitle("Ellipse Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
Ellipseঅবজেক্ট তৈরি করা হয়েছে, যেখানে প্রথম প্যারামিটার (150) প্রস্থ এবং দ্বিতীয় প্যারামিটার (75) উচ্চতা।setFill()এবংsetStroke()মেথড ব্যবহার করে এলিপসের ভেতরের এবং বাইরের রঙ নির্ধারণ করা হয়েছে।
5. Polygon
Polygon শেপটি বিভিন্ন কোণযুক্ত আকার তৈরি করার জন্য ব্যবহৃত হয়, যেমন ত্রিভুজ, চতুর্ভুজ, ইত্যাদি।
উদাহরণ: Polygon ব্যবহার
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Polygon;
import javafx.stage.Stage;
public class PolygonExample extends Application {
@Override
public void start(Stage primaryStage) {
Polygon polygon = new Polygon();
polygon.getPoints().addAll(200.0, 50.0, // প্রথম কোণ
250.0, 150.0, // দ্বিতীয় কোণ
150.0, 150.0); // তৃতীয় কোণ
polygon.setFill(Color.PURPLE); // পলিগনের ভেতরের রঙ
polygon.setStroke(Color.BLACK); // পলিগনের বাহিরের রঙ
StackPane root = new StackPane();
root.getChildren().add(polygon);
Scene scene = new Scene(root, 400, 300);
primaryStage.setTitle("Polygon Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
Polygonঅবজেক্টেgetPoints()মেথড ব্যবহার করে পলিগনের কোণগুলি নির্ধারণ করা হয়েছে। এখানে একটি ত্রিভুজ তৈরি করা হয়েছে।setFill()এবংsetStroke()মেথড ব্যবহার করে পলিগনের ভেতরের এবং বাইরের রঙ নির্ধারণ করা হয়েছে।
JavaFX তে 2D Shapes ব্যবহার করে বিভিন্ন ধরনের গ্রাফিক্যাল উপাদান তৈরি করা যায়, যেমন Line, Rectangle, Circle, Ellipse, এবং Polygon। এই শেপগুলোর মাধ্যমে সহজে আকর্ষণীয় UI উপাদান এবং গ্রাফিক্স তৈরি করা সম্ভব, যা JavaFX অ্যাপ্লিকেশনের জন্য অত্যন্ত কার্যকরী।
JavaFX-এ Shape এবং Node দুটি গুরুত্বপূর্ণ কনসেপ্ট যা গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) এবং গ্রাফিক্স সম্পর্কিত অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়।
JavaFX এর Scene Graph একটি হায়ারার্কিকাল স্ট্রাকচার, যেখানে প্রতিটি Node একটি ইউজার ইন্টারফেস উপাদান অথবা গ্রাফিক্যাল অবজেক্টের প্রতিনিধিত্ব করে। এই Node গুলো Scene এর মধ্যে গ্রাফিক্যাল কন্টেন্ট বা UI উপাদান হিসেবে প্রদর্শিত হয়। Shape হলো একটি বিশেষ ধরনের Node যা নির্দিষ্ট আকার (shape) বা গ্রাফিক্যাল অবজেক্টকে উপস্থাপন করে, যেমন লাইন, সার্কেল, রেকটেঙ্গল ইত্যাদি।
Shape এবং Node এর মধ্যে সম্পর্ক:
- Node ক্লাস:
- Node হল JavaFX Scene Graph-এর একটি মৌলিক ক্লাস, যা সমস্ত গ্রাফিক্যাল উপাদান (UI কন্ট্রোল, গ্রাফিক্যাল অবজেক্ট) এর বেস ক্লাস।
Nodeক্লাস বিভিন্ন ধরনের Shape, Group, ImageView, Text, Control ইত্যাদি উপাদান ধারণ করে।Nodeক্লাসের মাধ্যমে আপনি অ্যানিমেশন, ইভেন্ট হ্যান্ডলিং, এবং UI উপাদানগুলির অবস্থান পরিবর্তন করতে পারেন।
- Shape ক্লাস:
- Shape হল
Nodeক্লাসের একটি সাবক্লাস যা বিশেষভাবে গ্রাফিক্যাল শেপ (যেমন, রেকটেঙ্গল, সার্কেল, লাইন) আঁকার জন্য ব্যবহৃত হয়। Shapeহল একটি সাধারণ গ্রাফিক্যাল অবজেক্ট যা দৃশ্যমান আকার এবং নির্দিষ্ট বৈশিষ্ট্য যেমন রঙ, সীমানা (border), প্যাডিং ইত্যাদি ধারণ করে।- Shape ক্লাসের মধ্যে বিভিন্ন শেপ যেমন
Circle,Rectangle,Line,Polygonইত্যাদি আছে যা JavaFX এর গ্রাফিক্যাল কন্টেন্টকে ডিজাইন করতে সহায়তা করে।
- Shape হল
Shape এবং Node এর সম্পর্ক:
- Shape ক্লাসটি Node ক্লাসের একটি অংশ, অর্থাৎ সব Shape হলো Node। প্রতিটি Shape একটি Node হিসেবে কাজ করে Scene Graph-এ, কিন্তু Shape বিশেষভাবে গ্রাফিক্যাল আকার (shape) নির্দেশ করার জন্য ডিজাইন করা হয়েছে।
- যেহেতু Shape হল Node ক্লাসের সাবক্লাস, তাই Shape সমস্ত বৈশিষ্ট্য এবং ফিচার ব্যবহার করতে পারে যা Node ক্লাস প্রদান করে, যেমন
translateX,translateY,rotate,scaleইত্যাদি।
Shape এবং Node এর ব্যবহার:
Node ক্লাসের বৈশিষ্ট্য:
- Layout:
setLayoutX(),setLayoutY(),setTranslateX(),setTranslateY()ইত্যাদি ব্যবহার করে আপনার Node গুলোকে কাস্টম অবস্থানে রাখতে পারেন। - Transformation:
setRotate(),setScaleX(),setScaleY()ইত্যাদি ব্যবহার করে আপনি Node এর আকৃতি পরিবর্তন করতে পারেন। - Event Handling:
setOnMouseClicked(),setOnKeyPressed()ইত্যাদি ব্যবহার করে আপনি Node এর ইভেন্ট হ্যান্ডলিং করতে পারেন।
Shape ক্লাসের বৈশিষ্ট্য:
- Shape-এ আপনি গ্রাফিক্যাল আকারগুলি যেমন
Circle,Rectangle,Line,Polygonইত্যাদি তৈরি করতে পারেন। - Shape ক্লাসের মাধ্যমে আপনি বিভিন্ন আকার এবং বৈশিষ্ট্য (যেমন, রঙ, বর্ডার, প্যাডিং, ফিল) কাস্টমাইজ করতে পারেন।
উদাহরণ: Node এবং Shape এর ব্যবহার:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class ShapeAndNodeExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি রেকটেঙ্গল (Shape) তৈরি করা
Rectangle rectangle = new Rectangle(100, 50); // আকার ১০০x৫০ পিক্সেল
rectangle.setFill(Color.BLUE); // রঙ নীল
// একটি সার্কেল (Shape) তৈরি করা
Circle circle = new Circle(50); // ব্যাসার্ধ ৫০ পিক্সেল
circle.setFill(Color.RED); // রঙ লাল
// StackPane এ শেপগুলো যোগ করা
StackPane root = new StackPane();
root.getChildren().addAll(rectangle, circle);
// Scene তৈরি করা এবং স্টেজে সেট করা
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Shape and Node Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- এখানে
RectangleএবংCircleহল Shape ক্লাসের উদাহরণ। StackPaneএকটি Node যা Rectangle এবং Circle দুটি Shape উপাদানকে ধারণ করে।- Node ক্লাসের মাধ্যমে শেপগুলির অবস্থান, আকার, এবং অন্যান্য বৈশিষ্ট্য নিয়ন্ত্রণ করা হয়েছে।
Shape এবং Node এর মধ্যে পার্থক্য:
- Node একটি সর্বজনীন গ্রাফিক্যাল উপাদান যা কন্ট্রোল, শেপ, গ্রাফিক্স ইত্যাদি সমস্ত ধরনের UI উপাদান ধারণ করতে ব্যবহৃত হয়। অন্যদিকে, Shape বিশেষভাবে গ্রাফিক্যাল আকার বা ভিজ্যুয়াল অবজেক্ট (যেমন লাইন, রেকটেঙ্গল, সার্কেল) এর জন্য ব্যবহৃত হয়।
- Shape একটি Node এর অধীনে থাকে, তাই Shape-এর সমস্ত ফিচার Node এর মাধ্যমে অ্যাক্সেস করা যায়।
নির্দেশিকা:
- Node ক্লাসটি গ্রাফিক্যাল UI উপাদান, ইভেন্ট হ্যান্ডলিং, অবস্থান, আকার এবং রোটেশন নিয়ন্ত্রণ করার জন্য ব্যবহার করা হয়, তবে Shape শুধুমাত্র গ্রাফিক্যাল অবজেক্ট তৈরি করতে ব্যবহৃত হয়।
- আপনি JavaFX অ্যাপ্লিকেশনে Shape ক্লাসের বিভিন্ন গ্রাফিক্যাল উপাদান (যেমন,
Circle,Rectangle,Line,Polygon) ব্যবহার করতে পারবেন, এবং এগুলো Node ক্লাসের একটি সাবক্লাস হিসেবে Scene গ্রাফে প্রদর্শিত হবে।
সারাংশ:
- Node হল JavaFX এর গ্রাফিক্যাল ইউজার ইন্টারফেসের মৌলিক উপাদান, যা UI কন্ট্রোল এবং গ্রাফিক্যাল অবজেক্ট গুলোকে ধারণ করে।
- Shape হল Node এর একটি বিশেষ ধরনের ক্লাস যা শুধুমাত্র গ্রাফিক্যাল আকার তৈরি করার জন্য ব্যবহৃত হয়।
- Shape সবসময় Node এর একটি অংশ, এবং JavaFX Scene Graph-এ Shape গুলো Node হিসেবে ব্যবহৃত হয়।
এভাবেই Node এবং Shape এর মধ্যে সম্পর্ক কাজ করে, যেখানে Shape হল Node এর একটি বিশেষ কেস, যা শুধুমাত্র আকার বা ভিজ্যুয়াল অবজেক্ট তৈরি করতে ব্যবহৃত হয়।
JavaFX-এ Shape একটি Node (যা Scene Graph এর একটি অংশ) যা 2D গ্রাফিক্স উপাদান বা আকৃতি তৈরি করে, যেমন Circle, Rectangle, Line, Polygon ইত্যাদি। Shapes JavaFX অ্যাপ্লিকেশনগুলির মধ্যে গ্রাফিক্স তৈরি করতে ব্যবহৃত হয়, এবং এগুলোর বিভিন্ন বৈশিষ্ট্য বা properties এবং styling techniques দিয়ে এগুলোর ডিজাইন কাস্টমাইজ করা যেতে পারে।
Shape এবং Node এর মধ্যে সম্পর্ক:
- Shape হল Node এর একটি বিশেষ সাবক্লাস। প্রতিটি Shape একটি
Nodeএর মতোই কাজ করে এবং গ্রাফিক্সের জন্য এটি একটি বিশেষ ধরনেরNode। Nodeহলো JavaFX-এর এমন একটি মৌলিক ক্লাস যা Scene Graph-এ সমস্ত UI উপাদান বা কন্ট্রোলের জন্য ভিত্তি তৈরি করে।- Shape ক্লাসে বিভিন্ন গ্রাফিক্যাল আকৃতি (যেমন Circle, Rectangle, Line, Polygon) এর জন্য নির্দিষ্ট ফিচার এবং মেথড রয়েছে।
Shape Properties:
Shape ক্লাসে বেশ কিছু properties রয়েছে, যা আপনি কাস্টমাইজ করতে পারেন। কিছু গুরুত্বপূর্ণ properties হল:
fill: এই প্রপার্টি দিয়ে আকৃতির অভ্যন্তরীণ রঙ (fill color) নির্ধারণ করা হয়। উদাহরণস্বরূপ, আপনি একটি রঙিন বৃত্ত বা বর্গাকার আকৃতি তৈরি করতে পারেন।stroke: আকৃতির বাইরের সীমানা বা বর্ডার এর রঙ এবং প্রস্থ নির্ধারণ করে।strokeWidth: আকৃতির সীমানার প্রস্থ নির্ধারণ করে।opacity: আকৃতির স্বচ্ছতা বা অস্বচ্ছতার মান নির্ধারণ করে। এটি 0.0 থেকে 1.0 এর মধ্যে হতে পারে (0.0 মানে সম্পূর্ণ স্বচ্ছ এবং 1.0 মানে সম্পূর্ণ অস্বচ্ছ)।rotate: আকৃতি ঘোরানো (rotate) করা। এটি একটি ডিগ্রি মান গ্রহণ করে এবং Shape কে নির্দিষ্ট ডিগ্রি ঘোরায়।scaleXএবংscaleY: আকৃতির আকারকে এক্স ও ওয়াই অক্ষ বরাবর বৃদ্ধি বা কমানো (scale) করার জন্য ব্যবহৃত হয়।translateXএবংtranslateY: আকৃতির অবস্থান বা স্থানান্তর (translation) নির্ধারণ করে।
Styling Techniques:
JavaFX-এ Shape এর স্টাইলিং করার জন্য আপনি CSS ব্যবহার করতে পারেন। JavaFX CSS স্টাইলিং, HTML CSS স্টাইলিংয়ের মতোই কাজ করে, এবং এতে আপনি আকৃতির ডিজাইনকে আরও পরিপূর্ণ করতে পারেন। CSS এর মাধ্যমে আপনি Shape এর ফিল, স্ট্রোক, ব্যাকগ্রাউন্ড, প্যাডিং ইত্যাদি কাস্টমাইজ করতে পারেন।
Shape Styling Techniques with CSS:
JavaFX এর CSS স্টাইলিং ব্যবহার করে আপনি গ্রাফিক্যাল শেপগুলিকে সজ্জিত করতে পারেন। CSS ব্যবহার করে Shape এর স্টাইল সেট করা হয়।
CSS Styling Example:
/* Styling for Circle */
.circle {
-fx-fill: #3498db; /* Fill color (blue) */
-fx-stroke: #2980b9; /* Stroke color (dark blue) */
-fx-stroke-width: 5; /* Stroke width */
-fx-opacity: 0.8; /* Opacity */
}
/* Styling for Rectangle */
.rectangle {
-fx-fill: yellow; /* Fill color (yellow) */
-fx-stroke: green; /* Stroke color (green) */
-fx-stroke-width: 3; /* Stroke width */
-fx-opacity: 0.9; /* Opacity */
}
JavaFX Shape Styling Example:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class ShapeStylingExample extends Application {
@Override
public void start(Stage primaryStage) {
// Circle তৈরি
Circle circle = new Circle(50, Color.BLUE);
circle.setStroke(Color.DARKBLUE);
circle.setStrokeWidth(5);
// Rectangle তৈরি
Rectangle rectangle = new Rectangle(100, 50, Color.YELLOW);
rectangle.setStroke(Color.GREEN);
rectangle.setStrokeWidth(3);
// StackPane এর মধ্যে শেপগুলি যুক্ত করা
StackPane root = new StackPane();
root.getChildren().addAll(circle, rectangle);
// Scene তৈরি এবং স্টাইলিং প্রয়োগ করা
Scene scene = new Scene(root, 300, 250);
scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
primaryStage.setTitle("Shape Styling Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Important Shape Properties and CSS Styling Examples:
-fx-fill: আকৃতির অভ্যন্তরীণ রঙ নির্ধারণ করতে ব্যবহৃত হয়। এটি ফিল রঙকে সেট করে (যেমন,-fx-fill: #3498db;- নীল রঙ)।-fx-stroke: আকৃতির সীমানার রঙ নির্ধারণ করে। উদাহরণস্বরূপ,-fx-stroke: #2980b9;এটি সীমানার রঙ নীল করবে।-fx-stroke-width: আকৃতির সীমানার প্রস্থ নির্ধারণ করে। যেমন-fx-stroke-width: 5;৫ পিক্সেল সীমানা প্রস্থ হবে।-fx-opacity: আকৃতির স্বচ্ছতা নির্ধারণ করে। উদাহরণস্বরূপ,-fx-opacity: 0.7;৭০% অস্বচ্ছতা থাকবে (এটি 0.0 থেকে 1.0 পর্যন্ত হতে পারে)।-fx-translateXand-fx-translateY: আকৃতির স্থানান্তর (translation) প্রপার্টি। এটি আকৃতির অবস্থান পরিবর্তন করতে ব্যবহৃত হয়।-fx-rotate: আকৃতির ঘূর্ণন (rotation) নির্ধারণ করে। এটি deg (ডিগ্রি) দিয়ে ঘূর্ণন তৈরি করে।
CSS Styling Techniques for Shape:
- Shape Properties via CSS: JavaFX Shapes-এর সমস্ত স্টাইলিং CSS এর মাধ্যমে করা যেতে পারে। যেমন,
-fx-fill,-fx-stroke,-fx-opacity,-fx-rotate,-fx-translateXইত্যাদি CSS প্রপার্টি ব্যবহার করে আপনি Shape এর স্টাইল কাস্টমাইজ করতে পারেন। - Gradients: আপনি
linear-gradientবাradial-gradientব্যবহার করে Shape-এর ভিতরের রঙ পরিবর্তন করতে পারেন।
.circle {
-fx-fill: linear-gradient(from 0% 0% to 100% 100%, red, yellow);
-fx-stroke: black;
-fx-stroke-width: 3;
}
- Effect: আপনি JavaFX-এর বিভিন্ন effect ব্যবহার করে Shape-এর উপর অতিরিক্ত এফেক্ট প্রয়োগ করতে পারেন, যেমন
DropShadow,Glow,Reflectionইত্যাদি।
.circle {
-fx-fill: red;
-fx-effect: dropshadow(gaussian, black, 10, 0, 2, 2);
}
JavaFX Shapes ক্লাস এবং এর প্রপার্টিজ দিয়ে আপনি গ্রাফিক্স এবং 2D আকৃতিগুলি কাস্টমাইজ এবং স্টাইল করতে পারেন। CSS ব্যবহার করে আকৃতির রঙ, সীমানা, ঘূর্ণন, স্থানান্তর, এবং অন্যান্য ভিজ্যুয়াল এফেক্ট যোগ করা সম্ভব। CSS ও JavaFX এর শক্তিশালী স্টাইলিং টুলস ব্যবহার করে আপনি খুব সহজে আকৃতির ডিজাইন পরিবর্তন করতে পারেন এবং আকর্ষণীয় UI উপাদান তৈরি করতে পারেন।
JavaFX Graphics এর জন্য Group এবং Transformations ব্যবহার করে আপনি আরও আকর্ষণীয় এবং ইন্টারেক্টিভ গ্রাফিক্স তৈরি করতে পারেন। JavaFX গ্রাফিক্সের জন্য একটি শক্তিশালী গ্রাফিক্যাল লাইব্রেরি প্রদান করে যা আপনাকে শেপ, ছবি, পাঠ্য, এবং অন্যান্য গ্রাফিক্যাল উপাদানগুলির উপর কাজ করার সুযোগ দেয়। নিচে Group এবং Transformations এর ব্যবহারের বিস্তারিত আলোচনা দেওয়া হল।
1. Group (JavaFX Graphics)
Group হল JavaFX এর একটি কন্টেইনার যা এক বা একাধিক গ্রাফিক্যাল উপাদান (যেমন শেপ, পাঠ্য, ইমেজ ইত্যাদি) ধারণ করতে পারে। Group ব্যবহার করে আপনি একাধিক উপাদানকে একটি গোষ্ঠী (group) হিসেবে একত্রিত করতে পারেন এবং তাদের একসাথে পরিচালনা করতে পারেন।
Group ব্যবহার করে উদাহরণ:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class GroupExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি গ্রুপ তৈরি করা
Group group = new Group();
// দুটি গ্রাফিক্যাল উপাদান তৈরি করা
Circle circle = new Circle(50, 50, 30); // সেন্টার (50, 50), রেডিয়াস 30
circle.setFill(Color.RED);
Rectangle rectangle = new Rectangle(100, 100, 60, 40); // পজিশন (100, 100), আকার (60, 40)
rectangle.setFill(Color.BLUE);
// গ্রুপে শেপ দুটি যোগ করা
group.getChildren().addAll(circle, rectangle);
// Scene তৈরি করা
Scene scene = new Scene(group, 300, 250);
primaryStage.setTitle("Group Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
- এখানে, একটি
Groupতৈরি করা হয়েছে যা একটিCircleএবং একটিRectangleধারণ করছে।Groupব্যবহার করলে আপনি একাধিক উপাদানকে একসাথে গ্রুপ করতে পারেন এবং তাদের একসাথে ট্রান্সফর্ম বা স্টাইল করতে পারবেন।
Group এর সুবিধা:
- উপাদানগুলির সজ্জা: আপনি একাধিক গ্রাফিক্যাল উপাদানকে গ্রুপ করে তাদের একত্রে পরিচালনা করতে পারেন।
- সহজ ইন্টারঅ্যাকশন: গ্রুপের ওপর ট্রান্সফর্মেশন এবং স্টাইল প্রয়োগ করলে তা গ্রুপের সকল উপাদানের ওপর কার্যকর হবে।
- প্রদর্শন: একাধিক উপাদানকে একটি গোষ্ঠীতে রেখে তাদের একত্রে এক্সপোজ করা সম্ভব।
2. Transformations (JavaFX Graphics)
Transformations হল JavaFX গ্রাফিক্সে একটি শক্তিশালী টুল যা শেপ বা উপাদানগুলির অবস্থান, আকার, ঘূর্ণন, স্কেল ইত্যাদি পরিবর্তন করতে সহায়তা করে। JavaFX ট্রান্সফর্মেশনগুলি বিভিন্ন ধরণের হয় যেমন:
- Translate Transformation (স্থানান্তর): উপাদানকে X এবং Y অক্ষের মাধ্যমে স্থানান্তর করা।
- Rotate Transformation (ঘূর্ণন): উপাদানটিকে একটি নির্দিষ্ট কোণে ঘোরানো।
- Scale Transformation (স্কেল): উপাদানের আকার পরিবর্তন করা।
- Shear Transformation (শিয়র): উপাদানকে একদিকে আকৃতির পরিবর্তন করা (এটি সাধারণত 3D গ্রাফিক্সে ব্যবহৃত হয়)।
Transformations উদাহরণ:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Scale;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class TransformationExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি গ্রুপ তৈরি করা
Group group = new Group();
// একটি রেকটেঙ্গেল তৈরি করা
Rectangle rectangle = new Rectangle(100, 100, 100, 50); // পজিশন (100, 100), আকার (100, 50)
rectangle.setFill(Color.GREEN);
// ট্রান্সফরমেশন যোগ করা (Translate, Scale)
Translate translate = new Translate(50, 50); // X ও Y অক্ষের মাধ্যমে স্থানান্তর
Scale scale = new Scale(1.5, 1.5); // আকার 1.5 গুণ বৃদ্ধি
// রেকটেঙ্গেলের ওপর ট্রান্সফরমেশন প্রয়োগ করা
rectangle.getTransforms().addAll(translate, scale);
// গ্রুপে রেকটেঙ্গেল যোগ করা
group.getChildren().add(rectangle);
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(group, 300, 250);
primaryStage.setTitle("Transformation Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
- Translate Transformation: এখানে
Translateট্রান্সফরমেশন ব্যবহার করে রেকটেঙ্গেলকে50পিক্সেল ডানে এবং উপরে স্থানান্তরিত করা হয়েছে। - Scale Transformation: রেকটেঙ্গেলের আকারকে 1.5 গুণ বৃদ্ধি করা হয়েছে।
getTransforms().addAll()ব্যবহার করে একাধিক ট্রান্সফরমেশন একসাথে প্রয়োগ করা হয়েছে।
Transformations এর বিভিন্ন প্রকার:
Translate (স্থানান্তর):
Translateট্রান্সফরমেশন ব্যবহার করে একটি উপাদানকে স্থানান্তর করা হয়।Translate translate = new Translate(50, 50);Rotate (ঘূর্ণন):
Rotateট্রান্সফরমেশন ব্যবহার করে একটি উপাদানকে একটি নির্দিষ্ট কোণে ঘুরানো হয়।Rotate rotate = new Rotate(45); // 45 ডিগ্রি ঘূর্ণনScale (স্কেল):
Scaleট্রান্সফরমেশন ব্যবহার করে উপাদানের আকার পরিবর্তন করা হয়।Scale scale = new Scale(2, 2); // উপাদানটি 2 গুণ বড় করাShear (শিয়র): শিয়র ট্রান্সফরমেশন একটি উপাদানকে একদিকে আকার পরিবর্তন করে।
Shear shear = new Shear(1.5, 0); // X অক্ষের শিয়র
JavaFX-এ Group এবং Transformations এর সুবিধা:
- গ্রুপিং:
- একাধিক গ্রাফিক্যাল উপাদানকে একটি
Groupএর মধ্যে একত্রিত করে তাদের উপর ট্রান্সফরমেশন, স্টাইল এবং অন্যান্য অপারেশন একসাথে প্রয়োগ করা যায়।
- একাধিক গ্রাফিক্যাল উপাদানকে একটি
- সহজ ট্রান্সফরমেশন:
Translate,Rotate,Scaleইত্যাদি ট্রান্সফরমেশন ব্যবহার করে আপনি সহজেই উপাদানের অবস্থান, আকার, বা ঘূর্ণন পরিবর্তন করতে পারেন।
- আকর্ষণীয় এবং ইন্টারঅ্যাকটিভ গ্রাফিক্স:
- JavaFX আপনাকে গ্রাফিক্সের উপর ট্রান্সফরমেশন প্রয়োগ করে আকর্ষণীয় এবং ইন্টারঅ্যাকটিভ অ্যানিমেশন তৈরি করতে সাহায্য করে।
- ডাইনামিক ইউজার ইন্টারফেস:
- ট্রান্সফরমেশন এবং গ্রুপিং ব্যবহার করে আপনি একাধিক উপাদানকে একত্রিত এবং একটি শৈল্পিক বা ডাইনামিক পদ্ধতিতে পরিবর্তন করতে পারেন।
সারাংশ:
- Group JavaFX-এ একাধিক গ্রাফিক্যাল উপাদানকে একত্রে গ্রুপ করতে সাহায্য করে এবং তাদের উপর একত্রে কাজ করা যায়।
- Transformations ব্যবহার করে আপনি JavaFX-এ শেপ বা উপাদানের স্থান, আকার, বা ঘূর্ণন পরিবর্তন করতে পারেন।
Translate,Rotate,Scaleইত্যাদি ট্রান্সফরমেশন আপনাকে খুব সহজে গ্রাফিক্যাল উপাদানগুলির মধ্যে পরিবর্তন আনতে সহায়তা করে।
JavaFX এর Group এবং Transformations আপনাকে গ্রাফিক্যাল উপাদানগুলির ওপর আরও নিয়ন্ত্রণ এবং শক্তিশালী ইন্টারঅ্যাকটিভ অ্যানিমেশন তৈরি করতে সহায়তা করে।
Read more