টিসিএল (Tcl) - Advanced Graphics এবং Custom Animation
Tcl/Tk এর মাধ্যমে আপনি Advanced Graphics এবং Custom Animation তৈরি করতে পারেন। Tk এর canvas উইজেট ব্যবহার করে আপনি জটিল গ্রাফিক্স ড্র করতে পারেন এবং animation তৈরি করতে পারেন। এখানে আমরা দেখবো কিভাবে advanced graphics এবং custom animation তৈরি করা যায় টিসিএল/Tk এর মাধ্যমে।
১. Advanced Graphics (অ্যাডভান্সড গ্রাফিক্স)
Tk Canvas উইজেটের মাধ্যমে আপনি জটিল গ্রাফিক্স এবং চিত্র আঁকতে পারেন। Tk-এ বিভিন্ন গ্রাফিক্স উপাদান যেমন lines, rectangles, ovals, polygons, text, এবং images আঁকা সম্ভব। এগুলি কাস্টম স্টাইল এবং প্রপার্টি দিয়ে কাস্টমাইজ করা যেতে পারে।
১.১. Canvas উইজেটের মাধ্যমে গ্রাফিক্স ড্রয়িং
Tk-এ canvas উইজেট ব্যবহার করে আপনি সহজেই 2D গ্রাফিক্স তৈরি করতে পারেন।
উদাহরণ:
package require Tk
# উইন্ডো তৈরি
set win [tk::toplevel .]
# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas
# বিভিন্ন ধরনের গ্রাফিক্স ড্রয়িং
$win.canvas create line 50 50 150 150 -width 2 -fill blue
$win.canvas create rectangle 60 60 160 160 -outline black -fill yellow
$win.canvas create oval 100 100 200 200 -outline red -fill green
$win.canvas create polygon 200 50 250 150 150 150 -fill orange -outline black
$win.canvas create text 200 200 -text "Advanced Graphics" -font "Helvetica 16 bold" -fill purple
# উইন্ডো প্রদর্শন
tk::mainloopএখানে:
create lineব্যবহার করে একটি লাইন আঁকা হয়েছে।create rectangleব্যবহার করে একটি রেকটাঙ্গেল আঁকা হয়েছে।create ovalব্যবহার করে একটি বৃত্ত আঁকা হয়েছে।create polygonব্যবহার করে একটি পলিগন আঁকা হয়েছে।create textব্যবহার করে টেক্সট যোগ করা হয়েছে।
১.২. অ্যাডভান্সড গ্রাফিক্স কাস্টমাইজেশন
Tk-এ canvas উইজেটের মাধ্যমে আপনি গ্রাফিক্সের স্টাইল কাস্টমাইজ করতে পারেন, যেমন রং, আকার, রেখার প্রস্থ ইত্যাদি।
উদাহরণ:
package require Tk
# উইন্ডো তৈরি
set win [tk::toplevel .]
# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas
# রঙ এবং আকার কাস্টমাইজ করে বিভিন্ন গ্রাফিক্স
$win.canvas create line 50 50 350 50 -width 3 -fill blue -dash (5, 2)
$win.canvas create rectangle 50 100 350 200 -outline black -width 2 -fill yellow
$win.canvas create oval 100 250 300 350 -outline green -width 4 -fill pink
# উইন্ডো প্রদর্শন
tk::mainloopএখানে:
-dash (5, 2)দিয়ে ড্যাশড লাইন তৈরি করা হয়েছে।-widthদিয়ে রেখার প্রস্থ কাস্টমাইজ করা হয়েছে।-fillদিয়ে রঙ কাস্টমাইজ করা হয়েছে।
২. Custom Animation (কাস্টম অ্যানিমেশন)
Custom Animation তৈরি করতে আপনি Tk Canvas উইজেটের সঙ্গে after কমান্ড ব্যবহার করতে পারেন। এটি একটি নির্দিষ্ট সময়ে পর পর কোনো ফাংশন কল করতে সাহায্য করে, যা অ্যানিমেশন তৈরিতে সহায়ক।
২.১. Basic Animation
এখানে একটি সিম্পল অ্যানিমেশন উদাহরণ দেওয়া হলো, যেখানে একটি বৃত্ত (circle) এক স্থান থেকে অন্য স্থানে সরানো হচ্ছে।
package require Tk
# উইন্ডো তৈরি
set win [tk::toplevel .]
# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas
# বৃত্ত তৈরি
set circleId [$win.canvas create oval 10 10 60 60 -fill red]
# অ্যানিমেশন ফাংশন
proc moveCircle {} {
global circleId
$win.canvas move $circleId 10 0 ;# বৃত্তটিকে 10 পিক্সেল ডান দিকে সরান
after 100 moveCircle ;# 100 মিলিসেকেন্ড পর moveCircle আবার কল হবে
}
# অ্যানিমেশন শুরু
moveCircle
# উইন্ডো প্রদর্শন
tk::mainloopএখানে:
moveকমান্ড দিয়ে বৃত্তটিকে ১০ পিক্সেল ডান দিকে সরানো হচ্ছে।after 100 moveCircleকমান্ডটি প্রতি ১০০ মিলিসেকেন্ড পর পরmoveCircleফাংশনটি পুনরায় কল করবে, যা বৃত্তটিকে গতিশীল করে।
২.২. Multiple Objects Animation
আপনি একাধিক অবজেক্ট (যেমন একাধিক বৃত্ত বা ছবি) অ্যানিমেট করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে দুটি বৃত্ত একসাথে অ্যানিমেট করা হয়েছে।
package require Tk
# উইন্ডো তৈরি
set win [tk::toplevel .]
# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas
# দুটি বৃত্ত তৈরি
set circle1 [$win.canvas create oval 10 10 60 60 -fill red]
set circle2 [$win.canvas create oval 100 100 150 150 -fill blue]
# অ্যানিমেশন ফাংশন
proc moveCircles {} {
global circle1 circle2
$win.canvas move $circle1 5 0 ;# প্রথম বৃত্তটিকে 5 পিক্সেল ডান দিকে সরান
$win.canvas move $circle2 5 0 ;# দ্বিতীয় বৃত্তটিকে 5 পিক্সেল ডান দিকে সরান
after 100 moveCircles ;# 100 মিলিসেকেন্ড পর moveCircles আবার কল হবে
}
# অ্যানিমেশন শুরু
moveCircles
# উইন্ডো প্রদর্শন
tk::mainloopএখানে, দুটি বৃত্ত একসাথে অ্যানিমেট করা হচ্ছে এবং move কমান্ডের মাধ্যমে প্রতিটি বৃত্তকে সরানো হচ্ছে।
২.৩. Complex Animation with Rotation
এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি বৃত্ত একটি নির্দিষ্ট কোণে ঘোরানো হচ্ছে।
package require Tk
# উইন্ডো তৈরি
set win [tk::toplevel .]
# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas
# বৃত্ত তৈরি
set circleId [$win.canvas create oval 10 10 60 60 -fill red]
# ঘোরানোর ফাংশন
proc rotateCircle {angle} {
global circleId
set centerX 35
set centerY 35
set radian [expr {$angle * 3.14159 / 180}]
set x1 [expr {35 + (10 * cos($radian))}]
set y1 [expr {35 + (10 * sin($radian))}]
$win.canvas coords $circleId $x1 $y1 [expr {$x1 + 50}] [expr {$y1 + 50}]
after 100 [list rotateCircle [expr {$angle + 5}]]
}
# অ্যানিমেশন শুরু
rotateCircle 0
# উইন্ডো প্রদর্শন
tk::mainloopএখানে:
- বৃত্তটি
rotateফাংশনের মাধ্যমে ঘোরানো হচ্ছে। এটি একটি নির্দিষ্ট কোণে (এখানে প্রতি ৫ ডিগ্রি) ঘোরানো হচ্ছে।
উপসংহার
Tk-এর canvas উইজেট ব্যবহার করে আপনি Advanced Graphics এবং Custom Animation তৈরি করতে পারেন। Graphics Drawing টেকনিক ব্যবহার করে আপনি বিভিন্ন আকার, লাইন, পলিগন, টেক্সট ইত্যাদি আঁকতে পারেন, এবং Animation টেকনিক ব্যবহার করে সেগুলির গতিশীল পরিবর্তন বা চলাচল তৈরি করতে পারেন। Tk এর after কমান্ড ব্যবহার করে আপনি গ্রাফিক্স এবং অ্যানিমেশনকে লাইভ আপডেট করতে পারেন। Custom Animation তৈরি করতে আপনি অবজেক্টের অবস্থান, আকার, রং পরিবর্তন করতে পারেন এবং বিভিন্ন ধরনের অ্যানিমেশন ইফেক্ট তৈরি করতে পারেন।
Read more