Canvas এবং Drawing (ক্যানভাস এবং ড্রইং)

টিসিএল/টিকে (Tcl/Tk) - Computer Programming

529

টিসিএল (Tcl) - ক্যানভাস এবং ড্রইং (Canvas and Drawing): বিস্তারিত আলোচনা

টিসিএল (Tcl) এর Tk টুলকিটের মাধ্যমে গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) তৈরি করা যায়, এবং তার মধ্যে একটি গুরুত্বপূর্ণ উপাদান হলো ক্যানভাস (Canvas)। ক্যানভাস একটি বিশেষ উইজেট যা আপনাকে গ্রাফিক্যাল অগ্রগতি বা ড্রইং করতে দেয়। Tk এর ক্যানভাস উইজেট ব্যবহার করে আপনি রেকটেঙ্গেল, আর্ক, লাইন, ছবি এবং অন্যান্য বিভিন্ন গ্রাফিক্স উপাদান তৈরি করতে পারেন। এটি আকর্ষণীয় ইউজার ইন্টারফেস তৈরি করতে সহায়তা করে এবং ডায়নামিক গ্রাফিক্স বা চিত্র প্রদর্শন করতে ব্যবহৃত হয়।

নিম্নে ক্যানভাস এবং ড্রইং এর কার্যকারিতা এবং ব্যবহার ব্যাখ্যা করা হলো।

১. ক্যানভাস উইজেট (Canvas Widget)

Tk এর ক্যানভাস উইজেট হল একটি অঙ্গ যা বিভিন্ন গ্রাফিক্যাল অবজেক্টস যেমন রেখা, আয়তক্ষেত্র, সুতরাং, টেক্সট এবং চিত্রগুলি রেন্ডার করার জন্য ব্যবহৃত হয়। ক্যানভাস উইজেট তৈরি করতে Tk তে canvas কমান্ড ব্যবহার করা হয়।

ক্যানভাস উইজেট তৈরি:

pack [canvas .canvas -width 400 -height 400]

এখানে, pack কমান্ড ব্যবহার করে ক্যানভাসটি উইন্ডোতে যোগ করা হয়েছে এবং ক্যানভাসটির আকার ৪০০x৪০০ পিক্সেল নির্ধারণ করা হয়েছে।

২. ক্যানভাসে রেকটেঙ্গেল (Rectangle in Canvas)

ক্যানভাসে রেকটেঙ্গেল ড্র করতে create rectangle কমান্ড ব্যবহার করা হয়। এটি দুটি কোণের মধ্যে একটি আয়তক্ষেত্র আঁকে।

উদাহরণ:

canvas .canvas -width 400 -height 400
.pack
.canvas create rectangle 50 50 150 150 -fill blue

এখানে, create rectangle কমান্ডটি (50,50) থেকে (150,150) পর্যন্ত একটি রেকটেঙ্গেল তৈরি করবে, এবং এটি নীল রঙে পূর্ণ করা হবে।

৩. ক্যানভাসে লাইন (Line in Canvas)

ক্যানভাসে লাইন ড্র করতে create line কমান্ড ব্যবহার করা হয়। এটি দুটি বিন্দুর মধ্যে একটি সরল রেখা আঁকে।

উদাহরণ:

.canvas create line 10 10 100 100 -fill red -width 2

এখানে, create line কমান্ডটি (10,10) থেকে (100,100) পর্যন্ত একটি লাইন আঁকবে, এবং এটি লাল রঙের হবে এবং প্রস্থ ২ পিক্সেল হবে।

৪. ক্যানভাসে আর্ক (Arc in Canvas)

ক্যানভাসে আর্ক বা অর্ধবৃত্ত আঁকতে create arc কমান্ড ব্যবহার করা হয়। এটি বৃত্তের একটি অংশ বা আর্চ আঁকতে সহায়তা করে।

উদাহরণ:

.canvas create arc 50 50 150 150 -start 0 -extent 90 -width 3 -style arc

এখানে, create arc কমান্ডটি (50,50) থেকে (150,150) পর্যন্ত একটি আর্ক তৈরি করবে, যার শুরু কোণ ০ ডিগ্রি এবং পরিসীমা ৯০ ডিগ্রি। আর্কটির প্রস্থ হবে ৩ পিক্সেল।

৫. ক্যানভাসে টেক্সট (Text in Canvas)

ক্যানভাসে টেক্সট যোগ করতে create text কমান্ড ব্যবহার করা হয়।

উদাহরণ:

.canvas create text 200 200 -text "Hello, Tk!" -font "Helvetica 20 bold" -fill green

এখানে, create text কমান্ডটি (200,200) পজিশনে "Hello, Tk!" টেক্সট যোগ করবে এবং এটি সবুজ রঙে এবং হেলভেটিকা ফন্টে ২০ পয়েন্ট সাইজে প্রদর্শিত হবে।

৬. ক্যানভাসে ছবি (Image in Canvas)

ক্যানভাসে ছবি যোগ করতে create image কমান্ড ব্যবহার করা হয়। আপনাকে আগে ছবিটি লোড করতে হবে এবং পরে তা ক্যানভাসে প্রদর্শন করতে হবে।

উদাহরণ:

# লোড একটি ছবি
set img [image create photo -file "example.png"]

# ছবিটি ক্যানভাসে যোগ করা
.canvas create image 100 100 -image $img

এখানে, create image কমান্ডটি ক্যানভাসে একটি ছবি লোড এবং প্রদর্শন করবে। ছবি এর অবস্থান (100,100) পজিশনে হবে।

৭. ক্যানভাসে অবজেক্ট ম্যানিপুলেশন (Manipulating Canvas Objects)

টিসিএল ক্যানভাসে তৈরি করা অবজেক্টগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য বিভিন্ন কমান্ড এবং অপশন সরবরাহ করে। আপনি একটি অবজেক্ট মুছে ফেলতে, স্থানান্তর করতে, রিসাইজ করতে এবং অন্যান্য পরিবর্তন করতে পারেন।

অবজেক্ট মুছে ফেলা:

set rect_id [.canvas create rectangle 50 50 150 150 -fill blue]
.canvas delete $rect_id

এখানে, create rectangle কমান্ডের মাধ্যমে একটি রেকটেঙ্গেল তৈরি করা হয়েছে এবং delete কমান্ডের মাধ্যমে সেটি মুছে ফেলা হয়েছে।

অবজেক্ট স্থানান্তর:

set rect_id [.canvas create rectangle 50 50 150 150 -fill blue]
.canvas move $rect_id 100 100

এখানে, move কমান্ডটি রেকটেঙ্গেলটি ১০০ পিক্সেল ডানদিকে এবং ১০০ পিক্সেল নিচে স্থানান্তর করবে।

৮. ক্যানভাসে ইভেন্ট (Events in Canvas)

Tk ক্যানভাসে ইভেন্ট হ্যান্ডলিংয়ের জন্যও সাপোর্ট প্রদান করে। আপনি ক্যানভাসের উপর ক্লিক বা মাউসের অন্যান্য ইভেন্ট পরিচালনা করতে পারেন।

উদাহরণ:

.canvas bind <Button-1> {puts "Canvas clicked!"}

এখানে, bind কমান্ডটি ক্যানভাসে মাউসের বাম বাটনে ক্লিক করলে "Canvas clicked!" মেসেজটি আউটপুট করবে।

৯. ক্যানভাসে গ্রাফিক্যাল অ্যানিমেশন (Graphical Animation in Canvas)

ক্যানভাস উইজেটের মাধ্যমে অ্যানিমেশন তৈরি করা সম্ভব। after কমান্ডের মাধ্যমে আপনি নির্দিষ্ট সময় পর পর একটি অবজেক্টের অবস্থান পরিবর্তন করে অ্যানিমেশন তৈরি করতে পারেন।

উদাহরণ:

set ball [.canvas create oval 20 20 40 40 -fill red]
proc move_ball {} {
    global ball
    .canvas move $ball 10 0
    after 50 move_ball
}
move_ball

এখানে, move_ball প্রোসিডিউরটি প্রতিবার ১০ পিক্সেল করে বলটি ডান দিকে স্থানান্তরিত করবে এবং ৫০ মিলিসেকেন্ড পর পর এটি পুনরায় কল হবে, ফলে একটি অ্যানিমেশন তৈরি হবে।

উপসংহার

ক্যানভাস উইজেট টিসিএল (Tcl) এর Tk টুলকিটের একটি শক্তিশালী অংশ যা ড্রইং, গ্রাফিক্স এবং অ্যানিমেশন তৈরির জন্য ব্যবহৃত হয়। আপনি ক্যানভাসে বিভিন্ন গ্রাফিক্যাল অবজেক্ট যেমন আয়তক্ষেত্র, লাইন, আর্ক, টেক্সট, ছবি এবং অন্যান্য উপাদান তৈরি করতে পারেন। এই উইজেটটি দিয়ে আপনি শক্তিশালী GUI অ্যাপ্লিকেশন তৈরি করতে পারেন যা গ্রাফিক্স এবং ইন্টারঅ্যাকটিভ উপাদানগুলির মাধ্যমে ব্যবহারকারীর অভিজ্ঞতা উন্নত করবে।

Content added By

টিসিএল (Tcl) - Tk এর Canvas Widget এর ধারণা

Canvas উইজেট Tk-এ একটি খুবই শক্তিশালী এবং নমনীয় উইজেট, যা গ্রাফিক্স, ড্রইং, ইমেজ, এবং বিভিন্ন ধরনের আকার এবং অ্যানিমেশন তৈরি করার জন্য ব্যবহৃত হয়। এটি বিশেষভাবে গ্রাফিকাল উপাদান প্রদর্শন করার জন্য ব্যবহৃত হয়, যেমন চিত্র, রেখা, আকার (circle, rectangle), ইমেজ, এবং অন্যান্য ভিজ্যুয়াল উপাদান। Tk-এ Canvas উইজেটটি ইন্টারঅ্যাকটিভ অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে যেখানে আপনি ডায়নামিক্যালি গ্রাফিক্স কন্ট্রোল করতে পারেন।

এখানে Canvas Widget এর ধারণা এবং ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হলো।

১. Canvas উইজেট কী? (What is Canvas Widget?)

Canvas উইজেটটি Tk-এ একটি বিশেষ ধরনের উইজেট যা ব্যবহারকারীকে গ্রাফিকাল উপাদান তৈরি এবং প্রদর্শন করতে দেয়। এর মাধ্যমে আপনি ছবি বা গ্রাফিক্স আঁকতে, ছবি জুম ইন বা আউট করতে, বা বিভিন্ন ধরনের অ্যানিমেশন এবং ইন্টারঅ্যাকটিভ ইভেন্ট তৈরি করতে পারেন। এটি একটি বিশেষ এলাকা তৈরি করে যেখানে আপনি বিভিন্ন ধরনের গ্রাফিকাল উপাদান যোগ করতে পারেন।

২. Canvas উইজেটের মৌলিক উপাদান (Basic Elements of Canvas Widget)

Tk-এর Canvas উইজেটের মধ্যে বিভিন্ন গ্রাফিকাল উপাদান যোগ করা হয়:

  • Line: একটি রেখা আঁকা।
  • Rectangle: একটি আয়তক্ষেত্র আঁকা।
  • Oval: একটি বৃত্ত বা এলিপ্স আঁকা।
  • Text: টেক্সট প্রদর্শন।
  • Image: ছবি প্রদর্শন।
  • Polygon: একাধিক পয়েন্ট দিয়ে একটি আয়তক্ষেত্র বা অন্যান্য আকার আঁকা।
  • Arc: একটি আর্ক (বৃত্তের অংশ) আঁকা।

৩. Canvas উইজেট তৈরি করা (Creating Canvas Widget)

Tk-এ একটি Canvas উইজেট তৈরি করতে canvas কমান্ড ব্যবহার করা হয়। এখানে আপনাকে উইজেটের মধ্যে একটি গ্রাফিক্যাল এলাকা (অঞ্চল) তৈরি করতে হবে যেখানে বিভিন্ন উপাদান প্রদর্শন করা হবে।

উদাহরণ:

package require Tk

# উইন্ডো তৈরি
set window [tk::toplevel .]

# Canvas উইজেট তৈরি
canvas $window.myCanvas -width 400 -height 400 -bg "lightgrey"

# Canvas উইজেটটি উইন্ডোর মধ্যে প্যাক করা
pack $window.myCanvas

# ইভেন্ট লুপ শুরু
tk::MainLoop

এখানে, canvas উইজেটটি তৈরি করা হয়েছে যার প্রস্থ (width) এবং উচ্চতা (height) ৪০০ পিক্সেল। ব্যাকগ্রাউন্ড রঙ lightgrey দেওয়া হয়েছে।

৪. Canvas-এ গ্রাফিক্স আঁকা (Drawing Graphics on the Canvas)

Canvas-এ বিভিন্ন গ্রাফিক্যাল উপাদান আঁকতে create কমান্ড ব্যবহার করা হয়। এখানে কিছু উদাহরণ দেওয়া হলো।

৪.১. Line (রেখা আঁকা)

# Canvas-এ একটি রেখা আঁকা
$window.myCanvas create line 50 50 150 150 -fill "blue" -width 3

এখানে, create line কমান্ডটি একটি রেখা আঁকছে যার শুরু এবং শেষ পয়েন্ট (50,50) এবং (150,150)। এই রেখাটি নীল রঙের এবং এর প্রস্থ ৩ পিক্সেল।

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

# Canvas-এ একটি আয়তক্ষেত্র আঁকা
$window.myCanvas create rectangle 50 50 150 150 -fill "green" -outline "black" -width 2

এখানে, create rectangle কমান্ডটি একটি আয়তক্ষেত্র আঁকছে যার কোণগুলো (50,50) থেকে (150,150)। এই আয়তক্ষেত্রটির ভিতরটি সবুজ এবং সীমানা কালো রঙের।

৪.৩. Oval (বৃত্ত আঁকা)

# Canvas-এ একটি বৃত্ত আঁকা
$window.myCanvas create oval 100 100 200 200 -fill "yellow" -outline "red" -width 3

এখানে, create oval কমান্ডটি একটি বৃত্ত আঁকছে যার সীমানা (100,100) থেকে (200,200)। বৃত্তটির ভিতরটি হলুদ এবং সীমানা লাল রঙের।

৪.৪. Text (টেক্সট)

# Canvas-এ টেক্সট প্রদর্শন
$window.myCanvas create text 150 150 -text "Hello, Tk!" -font "Arial 20 bold"

এখানে, create text কমান্ডটি (150,150) পয়েন্টে "Hello, Tk!" টেক্সট প্রদর্শন করছে, এবং ফন্টটি Arial, সাইজ ২০, বোল্ড।

৪.৫. Image (ছবি)

# Canvas-এ ছবি প্রদর্শন
set img [image create photo -file "image.png"]
$window.myCanvas create image 200 200 -image $img

এখানে, একটি ছবি (যেমন "image.png") Canvas-এ (200,200) পয়েন্টে প্রদর্শন করা হচ্ছে।

৫. Canvas-এ ইন্টারঅ্যাকশন (Interaction with Canvas)

Tk Canvas উইজেট ব্যবহার করে আপনি ইন্টারঅ্যাকশন তৈরি করতে পারেন, যেমন মাউস ক্লিক, ড্র্যাগ বা রিলিজ। bind কমান্ড ব্যবহার করে আপনি ইভেন্ট হ্যান্ডলিং করতে পারেন।

উদাহরণ: মাউস ক্লিক ইভেন্ট

# Canvas-এ একটি আয়তক্ষেত্র আঁকা
set rectId [$window.myCanvas create rectangle 50 50 150 150 -fill "blue"]

# মাউস ক্লিক ইভেন্টে আয়তক্ষেত্রের রঙ পরিবর্তন
bind $window.myCanvas <Button-1> {
    $window.myCanvas itemconfigure $rectId -fill "red"
}

এখানে, আপনি যখন মাউসের বাটন ক্লিক করবেন, তখন আয়তক্ষেত্রটির রঙ নীল থেকে লাল হয়ে যাবে।

৬. Canvas-এ অ্যানিমেশন (Animation on Canvas)

Tk Canvas-এ অ্যানিমেশন তৈরি করার জন্য আপনি একাধিক উপাদান একের পর এক স্থানান্তর করতে পারেন। after কমান্ড ব্যবহার করে নির্দিষ্ট সময় পর পর একটি কোড চালানো যায়, যা অ্যানিমেশন তৈরি করতে সাহায্য করে।

উদাহরণ: একটি বস্তু স্থানান্তর করা

# Canvas-এ একটি বৃত্ত আঁকা
set circleId [$window.myCanvas create oval 50 50 100 100 -fill "green"]

# বৃত্তটিকে স্থানান্তর করার ফাংশন
proc moveCircle {} {
    global circleId
    $window.myCanvas move $circleId 5 0  ;# ৫ পিক্সেল ডানে সরানো
    after 50 moveCircle  ;# প্রতি ৫০ মিলিসেকেন্ড পর পর চলবে
}

# অ্যানিমেশন শুরু
moveCircle

এখানে, একটি বৃত্ত স্থানান্তরিত হবে প্রতি ৫০ মিলিসেকেন্ডে, এবং এটি ডানে সরতে থাকবে।

উপসংহার

Tk Canvas উইজেট একটি শক্তিশালী টুল যা টিসিএল ব্যবহারকারীদের গ্রাফিক্যাল উপাদান তৈরি এবং নিয়ন্ত্রণ করতে সাহায্য করে। এটি বিশেষভাবে উপকারী যখন আপনি গ্রাফ, চার্ট, অ্যানিমেশন বা ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করতে চান। Tk Canvas-এ আপনি সহজেই লাইন, রেকটেঙ্গল, ওভাল, টেক্সট, ইমেজ এবং পলিগন যোগ করতে পারেন এবং এতে ইভেন্ট হ্যান্ডলিং ও অ্যানিমেশন সমর্থন থাকে।

Content added By

টিসিএল (Tcl) - গ্রাফিক্স এবং শেপস আঁকা (Lines, Rectangles, Circles)

Tk টুলকিটের মাধ্যমে আপনি গ্রাফিক্স তৈরি করতে পারেন, যেমন লাইন্স, রেকট্যাঙ্গলস (আয়তক্ষেত্র), এবং সার্কেলস (বৃত্ত)। Tk-এ canvas উইজেট ব্যবহার করে আপনি এই গ্রাফিক্স আঁকতে পারেন। canvas হল একটি বিশেষ উইজেট যা বিভিন্ন গ্রাফিক্যাল উপাদান যেমন লাইন, আয়তক্ষেত্র, বৃত্ত, ছবি ইত্যাদি আঁকতে ব্যবহৃত হয়।

এখানে Tk canvas ব্যবহার করে লাইন্স, রেকট্যাঙ্গলস, এবং সার্কেলস আঁকার জন্য প্রয়োজনীয় পদক্ষেপগুলি আলোচনা করা হলো।


১. Canvas উইজেট তৈরি (Creating a Canvas Widget)

Tk-এ canvas উইজেট ব্যবহার করে আপনি গ্রাফিক্স আঁকতে পারেন। প্রথমে, আপনাকে একটি canvas উইজেট তৈরি করতে হবে, যেখানে আপনি শেপস আঁকবেন।

উদাহরণ:

package require Tk
set window [tk::mainwindow]
canvas $window.c -width 400 -height 400
pack $window.c

এখানে, একটি canvas উইজেট তৈরি করা হয়েছে যার আকার 400x400 পিক্সেল।


২. লাইন আঁকা (Drawing Lines)

Tk-এ একটি লাইন আঁকার জন্য create line কমান্ড ব্যবহার করা হয়। এর মাধ্যমে আপনি দুটি পয়েন্টের মধ্যে একটি সরল লাইন আঁকতে পারেন।

উদাহরণ:

package require Tk
set window [tk::mainwindow]
canvas $window.c -width 400 -height 400
pack $window.c

# Draw a line from (50, 50) to (350, 350)
$window.c create line 50 50 350 350 -fill "blue" -width 2

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

  • create line কমান্ডে, প্রথম দুটি সংখ্যার মাধ্যমে লাইনটির শুরু এবং শেষ পয়েন্ট নির্ধারণ করা হয়েছে।
  • -fill দ্বারা লাইনটির রঙ নির্ধারণ করা হয়েছে।
  • -width দ্বারা লাইনটির প্রস্থ নির্ধারণ করা হয়েছে।

৩. আয়তক্ষেত্র (Rectangles) আঁকা

Tk-এ create rectangle কমান্ড ব্যবহার করে আয়তক্ষেত্র আঁকা হয়। আয়তক্ষেত্রের জন্য চারটি পয়েন্ট নির্ধারণ করা হয়: শুরুর পয়েন্ট (উপর-বামে) এবং শেষ পয়েন্ট (নীচে-ডানে)।

উদাহরণ:

package require Tk
set window [tk::mainwindow]
canvas $window.c -width 400 -height 400
pack $window.c

# Draw a rectangle from (50, 50) to (350, 200)
$window.c create rectangle 50 50 350 200 -fill "yellow" -outline "black" -width 2

এখানে, একটি হলুদ রঙের আয়তক্ষেত্র আঁকা হয়েছে যার সীমানা 50, 50 থেকে 350, 200 পয়েন্ট পর্যন্ত।

  • -fill দ্বারা আয়তক্ষেত্রের ভেতরের রঙ নির্ধারণ করা হয়েছে।
  • -outline দ্বারা আয়তক্ষেত্রের বর্ডারের রঙ নির্ধারণ করা হয়েছে।
  • -width দ্বারা বর্ডারের প্রস্থ নির্ধারণ করা হয়েছে।

৪. বৃত্ত (Circles) আঁকা

Tk-এ create oval কমান্ড ব্যবহার করে বৃত্ত বা অখণ্ড এলিপ্স আঁকা হয়। একটি বৃত্ত আঁকতে হলে আপনাকে একটি আয়তক্ষেত্রের ভিতরে থাকা একটি বৃত্তের অংশ আঁকতে হবে, এবং এর মাধ্যমে আপনি একটি বৃত্ত তৈরি করবেন।

উদাহরণ:

package require Tk
set window [tk::mainwindow]
canvas $window.c -width 400 -height 400
pack $window.c

# Draw a circle (oval) from (100, 100) to (300, 300)
$window.c create oval 100 100 300 300 -fill "green" -outline "black" -width 2

এখানে, একটি সবুজ রঙের বৃত্ত আঁকা হয়েছে যা (100, 100) থেকে (300, 300) আয়তক্ষেত্রের মধ্যে অন্তর্ভুক্ত।

  • create oval কমান্ডে, দুটি পয়েন্ট (উপর-বাম এবং নীচে-ডান) ব্যবহার করা হয়েছে বৃত্ত আঁকার জন্য।
  • -fill দ্বারা বৃত্তের ভেতরের রঙ নির্ধারণ করা হয়েছে।
  • -outline দ্বারা বৃত্তের সীমানার রঙ নির্ধারণ করা হয়েছে।
  • -width দ্বারা সীমানার প্রস্থ নির্ধারণ করা হয়েছে।

৫. এনিমেশন এবং ইন্টারঅ্যাকশন (Animation and Interaction)

Tk canvas উইজেটের মাধ্যমে আপনি গ্রাফিক্সের এনিমেশনও করতে পারেন। উদাহরণস্বরূপ, একটি বৃত্তকে এক স্থান থেকে অন্য স্থানে সরানোর জন্য move কমান্ড ব্যবহার করা হয়।

উদাহরণ - বৃত্তের এনিমেশন:

package require Tk
set window [tk::mainwindow]
canvas $window.c -width 400 -height 400
pack $window.c

# Draw a circle (oval)
set circle [$window.c create oval 100 100 200 200 -fill "blue"]

# Move the circle across the canvas
after 1000 {
    $window.c move $circle 50 50
    after 1000 {
        $window.c move $circle 50 50
    }
}

এখানে, একটি নীল রঙের বৃত্ত আঁকা হয়েছে এবং move কমান্ডের মাধ্যমে সেটিকে একটি স্থান থেকে অন্য স্থানে সরানো হয়েছে।


৬. Canvas উইজেটের অন্যান্য গ্রাফিক্যাল ফিচারসমূহ

Tk canvas উইজেট আরও অনেক গ্রাফিক্যাল ফিচার প্রদান করে:

  • create line: লাইন আঁকতে।
  • create rectangle: আয়তক্ষেত্র আঁকতে।
  • create oval: বৃত্ত বা এলিপ্স আঁকতে।
  • create polygon: পলিগন আঁকতে।
  • create text: টেক্সট আঁকতে।
  • create image: ছবি আঁকতে।

এছাড়া, bind কমান্ড ব্যবহার করে আপনি বিভিন্ন গ্রাফিক্যাল উপাদানের সাথে ইন্টারঅ্যাক্ট করতে পারেন, যেমন মাউস ক্লিক বা কী প্রেস ইভেন্ট।


উপসংহার

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

Content added By

টিসিএল (Tcl) - Canvas এর মাধ্যমে Images এবং Text যুক্ত করা

টিসিএল (Tcl) এর Tk টুলকিটে Canvas উইজেট ব্যবহার করে আপনি গ্রাফিক্স, ছবি, টেক্সট এবং আকার আঁকতে পারেন। এটি ইউজার ইন্টারফেসে চিত্র এবং টেক্সটের মাধ্যমে ড্রইং বা গ্রাফিক্স তৈরি করার জন্য অত্যন্ত কার্যকরী একটি উইজেট। আপনি Canvas উইজেটের মাধ্যমে ছবি যোগ করতে পারেন, বিভিন্ন ধরনের আকার আঁকতে পারেন এবং টেক্সট প্রদর্শন করতে পারেন।

এখানে Canvas এর মাধ্যমে Images এবং Text যুক্ত করার প্রক্রিয়া নিয়ে বিস্তারিত আলোচনা করা হলো।

১. Canvas উইজেট তৈরি করা

Canvas উইজেট তৈরি করতে canvas কমান্ড ব্যবহার করা হয়। এটি একটি উইজেট তৈরি করবে যেখানে আপনি গ্রাফিক্যাল অবজেক্ট (যেমন ছবি, টেক্সট, আকার) প্রদর্শন করতে পারবেন।

উদাহরণ:

canvas .c -width 400 -height 400
pack .c

এখানে, .c নামে একটি Canvas উইজেট তৈরি করা হয়েছে যা ৪০০x৪০০ পিক্সেলের আকার ধারণ করে এবং pack কমান্ডের মাধ্যমে এটি স্ক্রিনে প্যাক করা হয়েছে।

২. Canvas এ Image যুক্ত করা

Canvas উইজেটের মাধ্যমে ছবি যুক্ত করতে create image কমান্ড ব্যবহার করা হয়। এই কমান্ডে আপনি একটি ছবি লোড করতে পারেন এবং Canvas এ এটি প্রদর্শন করতে পারেন।

২.১. Image লোড করা এবং প্রদর্শন করা

# Image লোড করা
set img [image create photo -file "image.jpg"]

# Canvas এ Image যুক্ত করা
.c create image 200 200 -image $img

এখানে, image create photo কমান্ডের মাধ্যমে "image.jpg" ছবিটি লোড করা হয়েছে এবং create image কমান্ড দিয়ে এটি Canvas এর মধ্যে (২০০, ২০০) পজিশনে প্রদর্শন করা হয়েছে।

  • 200 200: ছবির অবস্থান।
  • -image: এটি নির্দেশ করে যে একটি ছবি যোগ করা হচ্ছে এবং $img ভেরিয়েবলটি ছবিটির রেফারেন্স ধারণ করে।

২.২. Image Scaling (ছবির আকার পরিবর্তন)

আপনি ছবির আকার পরিবর্তন করতে চাইলে, -width এবং -height অপশন ব্যবহার করতে পারেন।

set img [image create photo -file "image.jpg"]
set img_resized [image create photo -width 100 -height 100]
$img_resized copy $img -subsample 2 2

.c create image 200 200 -image $img_resized

এখানে, ছবিটি ১০০x১০০ পিক্সেলে রিসাইজ করা হয়েছে এবং তারপর Canvas এ সেটি প্রদর্শিত হয়েছে।

৩. Canvas এ Text যুক্ত করা

Canvas উইজেটের মাধ্যমে টেক্সট যুক্ত করতে create text কমান্ড ব্যবহার করা হয়। আপনি বিভিন্ন স্টাইল এবং ফন্ট সেট করে টেক্সট প্রদর্শন করতে পারেন।

৩.১. Text যুক্ত করা

.c create text 150 50 -text "Hello, Tcl!" -font "Arial 20 bold" -fill "blue"

এখানে, "Hello, Tcl!" টেক্সটটি (১৫০, ৫০) পজিশনে Arial 20 bold ফন্ট এবং নীল রঙে প্রদর্শন করা হয়েছে।

  • -text: প্রদর্শিত টেক্সট নির্ধারণ করে।
  • -font: টেক্সটের ফন্ট এবং সাইজ নির্ধারণ করে।
  • -fill: টেক্সটের রঙ নির্ধারণ করে।

৩.২. Text Alignment এবং অন্যান্য স্টাইল

আপনি টেক্সটের alignment, justification, এবং অন্যান্য স্টাইলও কাস্টমাইজ করতে পারেন।

.c create text 150 150 -text "Tcl is awesome!" -font "Helvetica 18" -fill "red" -anchor "center"

এখানে, -anchor "center" ব্যবহার করে টেক্সটটি সেন্টার আলাইন করা হয়েছে, অর্থাৎ টেক্সটের কেন্দ্রবিন্দু (150, 150) পজিশনে থাকবে।

৪. Canvas এ Multiple Images এবং Text যোগ করা

একই Canvas এ একাধিক ছবি এবং টেক্সট যোগ করতে, আপনি একাধিক create image এবং create text কমান্ড ব্যবহার করতে পারেন।

# Image লোড করা
set img [image create photo -file "image1.jpg"]
set img2 [image create photo -file "image2.jpg"]

# Canvas এ Images এবং Text যোগ করা
.c create image 100 100 -image $img
.c create image 300 100 -image $img2
.c create text 200 300 -text "This is a label" -font "Arial 16" -fill "green"

এখানে, দুটি ছবি এবং একটি টেক্সট একযোগভাবে Canvas উইজেটে প্রদর্শিত হবে।

৫. Canvas-এর অন্যান্য গ্রাফিক্যাল অপারেশন

Canvas উইজেট দিয়ে আপনি শুধুমাত্র ছবি এবং টেক্সট নয়, আরও অনেক গ্রাফিক্যাল অবজেক্ট যেমন রেকট্যাঙ্গল, এলিপস, লাইন ইত্যাদি আঁকতে পারেন।

৫.১. Rectangle এবং Ellipse আঁকা

.c create rectangle 50 50 150 150 -fill "yellow" -outline "black"
.c create ellipse 200 200 300 300 -fill "blue" -outline "black"

এখানে, একটি রেকট্যাঙ্গল এবং একটি এলিপস আঁকা হয়েছে।

৫.২. Line আঁকা

.c create line 0 0 400 400 -fill "red" -width 3

এখানে, একটি লাল রঙের লাইন আঁকা হয়েছে যা উইন্ডোর কোণ থেকে কোণ পর্যন্ত প্রসারিত হবে।


উপসংহার

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

Content added By

টিসিএল (Tcl) - Animation এবং Custom Drawing Techniques

Tcl/Tk এর মাধ্যমে আপনি গ্রাফিকাল ইউজার ইন্টারফেস (GUI) তৈরি করতে পারেন এবং AnimationCustom Drawing টেকনিক ব্যবহার করে আপনার অ্যাপ্লিকেশনগুলিকে আরও আকর্ষণীয় ও ইন্টারঅ্যাকটিভ করে তুলতে পারেন। Tk টুলকিটের মাধ্যমে উইজেটের উপর কাস্টম গ্রাফিক্স ড্র করা এবং অ্যানিমেশন তৈরি করা সম্ভব।

এখানে Animation এবং Custom Drawing টেকনিকগুলি নিয়ে বিস্তারিত আলোচনা করা হলো।


১. Animation Techniques (অ্যানিমেশন টেকনিক)

অ্যানিমেশন হলো একটি গ্রাফিক্যাল উপাদান বা অবজেক্টের গতিশীল পরিবর্তন, যেমন কোনো জিনিসের গতি, রং পরিবর্তন ইত্যাদি। Tk এ অ্যানিমেশন তৈরি করার জন্য আপনি সাধারণত canvas উইজেট এবং after কমান্ড ব্যবহার করবেন।

১.১. Canvas উইজেট

Tk-এ canvas উইজেট ব্যবহার করে আপনি কাস্টম গ্রাফিক্স, ড্রয়িং এবং অ্যানিমেশন তৈরি করতে পারেন। canvas উইজেটের মাধ্যমে আপনি লাইন, রেকটাঙ্গেল, আর্চ, ছবি, টেক্সট এবং আরো অনেক গ্রাফিকাল উপাদান আঁকতে পারবেন।

১.২. Basic Animation উদাহরণ

এখানে একটি সাধারণ অ্যানিমেশন উদাহরণ দেওয়া হলো যেখানে একটি বৃত্ত (circle) ড্রয়িং করা হয়েছে এবং সেটি এক স্থান থেকে অন্য স্থানে অ্যানিমেটেডভাবে সরানো হচ্ছে।

package require Tk

# উইন্ডো তৈরি
set win [tk::toplevel .]

# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas

# বৃত্ত (circle) তৈরি
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

এখানে:

  • create oval কমান্ড দিয়ে একটি বৃত্ত তৈরি করা হয়েছে।
  • move কমান্ড দিয়ে বৃত্তটিকে ১০ পিক্সেল ডান দিকে সরানো হয়েছে।
  • after 100 moveCircle কমান্ডটি প্রতি ১০০ মিলিসেকেন্ড পর পর moveCircle ফাংশনটি পুনরায় কল করবে, যা বৃত্তটিকে গতিশীল করে।

১.৩. ইফেক্টস সহ অ্যানিমেশন

অ্যানিমেশন তৈরি করার সময় আপনি বিভিন্ন ধরনের ইফেক্ট যোগ করতে পারেন, যেমন রং পরিবর্তন, আকার পরিবর্তন, বা অবজেক্টের গতির পরিবর্তন। এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি বৃত্তের রং পরিবর্তন করা হচ্ছে।

package require Tk

# উইন্ডো তৈরি
set win [tk::toplevel .]

# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas

# বৃত্ত (circle) তৈরি
set circleId [$win.canvas create oval 10 10 60 60 -fill red]

# অ্যানিমেশন ফাংশন
proc animateCircle {} {
    global circleId
    set colors {red green blue yellow}
    set randomColor [lindex $colors [expr {int(rand()*4)}]]
    $win.canvas itemconfig $circleId -fill $randomColor  ;# রং পরিবর্তন
    after 500 animateCircle  ;# 500 মিলিসেকেন্ড পরে animateCircle আবার কল হবে
}

# অ্যানিমেশন শুরু
animateCircle

# উইন্ডো প্রদর্শন
tk::mainloop

এখানে, itemconfig কমান্ডের মাধ্যমে বৃত্তটির রং প্রতি ৫০০ মিলিসেকেন্ড পর পর পরিবর্তিত হচ্ছে।


২. Custom Drawing Techniques (কাস্টম ড্রয়িং টেকনিক)

Tk-এ custom drawing করার জন্য canvas উইজেট ব্যবহার করা হয়, যেখানে আপনি পিক্সেল ভিত্তিক বিভিন্ন গ্রাফিকাল উপাদান আঁকতে পারেন। আপনি লাইন, আর্চ, রেকটাঙ্গেল, বৃত্ত, ছবি, টেক্সট ইত্যাদি আঁকতে পারেন এবং এগুলির ওপর কাস্টম স্টাইল এবং প্রপার্টি অ্যাপ্লাই করতে পারেন।

২.১. Lines and Shapes Drawing

Tk-এ বিভিন্ন ধরনের আকার এবং লাইন ড্রয়িং করা যায়, যেমন লাইন, রেকটাঙ্গেল, বৃত্ত ইত্যাদি।

উদাহরণ:

package require Tk

# উইন্ডো তৈরি
set win [tk::toplevel .]

# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas

# লাইন ড্রয়িং
$win.canvas create line 10 10 200 200 -width 2 -fill blue

# রেকটাঙ্গেল ড্রয়িং
$win.canvas create rectangle 50 50 150 150 -outline black -fill green

# বৃত্ত ড্রয়িং
$win.canvas create oval 100 100 200 200 -outline red -fill yellow

# উইন্ডো প্রদর্শন
tk::mainloop

এখানে:

  • create line কমান্ড ব্যবহার করে একটি লাইন ড্র করা হয়েছে।
  • create rectangle কমান্ড ব্যবহার করে একটি রেকটাঙ্গেল ড্র করা হয়েছে।
  • create oval কমান্ড ব্যবহার করে একটি বৃত্ত ড্র করা হয়েছে।

২.২. Text Drawing

Tk-এ text ড্রয়িং করার জন্য create text কমান্ড ব্যবহার করা হয়। আপনি একটি স্ট্রিং বা লেবেল কাস্টম স্টাইলে ড্র করতে পারেন।

package require Tk

# উইন্ডো তৈরি
set win [tk::toplevel .]

# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas

# টেক্সট ড্রয়িং
$win.canvas create text 200 200 -text "Hello, Tcl!" -font "Helvetica 20 bold" -fill purple

# উইন্ডো প্রদর্শন
tk::mainloop

এখানে, create text কমান্ড ব্যবহার করে "Hello, Tcl!" টেক্সট ড্র করা হয়েছে এবং এর ফন্ট এবং রঙ কাস্টমাইজ করা হয়েছে।

২.৩. Complex Shapes Drawing

Tk-এ আরও জটিল গ্রাফিক্স আঁকার জন্য আপনি বিভিন্ন কমান্ড একত্রে ব্যবহার করতে পারেন।

package require Tk

# উইন্ডো তৈরি
set win [tk::toplevel .]

# canvas তৈরি
canvas $win.canvas -width 400 -height 400
pack $win.canvas

# একটি পেন্টাগন ড্র করা হচ্ছে
$win.canvas create polygon 100 50 150 150 50 150 -fill orange -outline black

# উইন্ডো প্রদর্শন
tk::mainloop

এখানে, create polygon কমান্ড ব্যবহার করে একটি পেন্টাগন তৈরি করা হয়েছে।


উপসংহার

Tk-এ Animation এবং Custom Drawing টেকনিকগুলি ব্যবহার করে আপনি আকর্ষণীয় এবং ইন্টারঅ্যাকটিভ অ্যাপ্লিকেশন তৈরি করতে পারেন। Animation টেকনিকের মাধ্যমে আপনি গ্রাফিক্যাল উপাদানগুলির গতিশীল পরিবর্তন তৈরি করতে পারেন, যেমন মাউস ক্লিক, রঙ পরিবর্তন ইত্যাদি। অন্যদিকে, Custom Drawing টেকনিকের মাধ্যমে আপনি গ্রাফিক্স, আকার, টেক্সট ইত্যাদি কাস্টমাইজডভাবে ড্র করতে পারেন। Tk-এর canvas উইজেটের মাধ্যমে এই সমস্ত কার্যক্রম সহজেই সম্পন্ন করা যায় এবং বিভিন্ন স্টাইলের উপাদান আঁকা সম্ভব হয়।

Content added By
Promotion

Are you sure to start over?

Loading...