InkCanvas Control হলো একটি গুরুত্বপূর্ণ UI কন্ট্রোল যা Windows Presentation Foundation (WPF), UWP (Universal Windows Platform), এবং WinUI অ্যাপ্লিকেশনে পেন বা ইনপুট ডিভাইস (যেমন ট্যাবলেট বা স্টাইলাস) এর মাধ্যমে অঙ্কন করার জন্য ব্যবহৃত হয়। এটি বিশেষভাবে ডিজাইন করা হয়েছে ব্যবহারকারীদের আঙুল বা পেন দিয়ে স্কেচ, আঁকুন বা লিখুন সুবিধা দেয়ার জন্য।
InkCanvas ব্যবহার করে ব্যবহারকারীরা সহজেই ড্রইং, স্কেচিং, সাইনেচার, ডুডল ইত্যাদি করতে পারেন, যা উইন্ডোজ ডিভাইসে পেন সহ ব্যবহারের জন্য খুবই উপযোগী।
InkCanvas Control কী?
InkCanvas একটি WPF কন্ট্রোল যা পেন, টাচ, অথবা মাউস ইনপুট ব্যবহার করে গ্রাফিক্স আঁকার জন্য ব্যবহৃত হয়। এটি বিশেষভাবে ডিজাইন করা হয়েছে ডিজিটাল স্কেচ, সাইনেচার, অঙ্কন বা নোট নেওয়ার জন্য। ব্যবহারকারী ইনপুট থেকে সিগনেচার, স্কেচ, অথবা অঙ্কন রেকর্ড করতে পারে এবং সেই ডেটা পরে প্রক্রিয়া বা সংরক্ষণ করা যায়।
প্রধান বৈশিষ্ট্য:
- Pen Input: পেন বা স্টাইলাস দিয়ে আঁকতে পারে।
- Touch Input: টাচ স্ক্রীনও সমর্থন করে, যেখানে ব্যবহারকারী আঙুল দিয়ে আঁকতে পারে।
- Strokes: InkCanvas-এ পেনের আঁকা লাইন বা স্ট্রোকগুলোকে Stroke বলা হয়। প্রতিটি স্ট্রোকের বিভিন্ন বৈশিষ্ট্য (যেমন রঙ, প্রস্থ, স্টাইল) নির্ধারণ করা যায়।
- Manipulation: Stroke-কে মুভ, সাইজ, অথবা রোটেট করা যায়।
- Serialization: Stroke এবং আঁকা ডেটাকে XML বা অন্যান্য ফর্ম্যাটে সেভ করা যায়।
InkCanvas ব্যবহার করা
InkCanvas সাধারণত XAML-এ ডিক্লেয়ার করা হয় এবং C# কোডের মাধ্যমে এটি নিয়ন্ত্রণ করা হয়। নীচে InkCanvas এর সাথে পেন বা স্টাইলাস ইনপুট ইনটিগ্রেট করার একটি উদাহরণ দেওয়া হলো।
XAML Example (InkCanvas)
<Window x:Class="InkCanvasExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="InkCanvas Example" Height="450" Width="800">
<Grid>
<InkCanvas Name="myInkCanvas" Background="White" />
</Grid>
</Window>
C# Code Behind
using System.Windows;
using System.Windows.Ink;
using System.Windows.Input;
namespace InkCanvasExample
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.myInkCanvas.DefaultDrawingAttributes.Color = System.Windows.Media.Colors.Black;
this.myInkCanvas.DefaultDrawingAttributes.Height = 2;
this.myInkCanvas.DefaultDrawingAttributes.Width = 2;
// Optional: Enable the use of the Pen or Mouse
myInkCanvas.EditingMode = InkCanvasEditingMode.Ink;
}
// Optional: Clear the canvas
private void ClearCanvas(object sender, RoutedEventArgs e)
{
myInkCanvas.Strokes.Clear();
}
}
}
ব্যাখ্যা:
- InkCanvas: এটি UI কন্ট্রোল যা পেন স্ট্রোক ধারণ করে।
- DefaultDrawingAttributes: এই প্রপার্টি দিয়ে স্ট্রোকের রঙ, প্রস্থ এবং উচ্চতা সেট করা যায়।
- EditingMode: এটি ইনপুট মোড নির্ধারণ করে (যেমন Ink, EraseByPoint, EraseByStroke, ইত্যাদি)।
- ClearCanvas: এটি একটি কাস্টম ফাংশন যা অ্যাপ্লিকেশন থেকে সমস্ত স্ট্রোক মুছে দেয়।
InkCanvas-এর অন্যান্য ফিচার এবং অপশন
১. InkCanvasEditingMode
InkCanvasEditingMode একটি ইন্টারফেসের মাধ্যমে InkCanvas এর বিভিন্ন মোড নির্বাচন করতে সাহায্য করে। এর মাধ্যমে পেন ইনপুট, মুছা, সিলেক্ট করা, এবং অন্যান্য স্ট্রোক সম্পাদনা করা যায়।
মোড অপশনগুলি:
- Ink: পেন ইনপুটের মাধ্যমে অঙ্কন করা।
- Select: আগের আঁকা স্ট্রোকগুলো নির্বাচন করা।
- EraseByPoint: নির্দিষ্ট একটি পয়েন্টে স্ট্রোক মুছে ফেলা।
- EraseByStroke: স্ট্রোক মুছে ফেলা।
২. Strokes Collection
InkCanvas এর Strokes প্রপার্টি স্ট্রোকগুলোর একটি কালেকশন ধারণ করে। এর মাধ্যমে আপনি আঁকা স্ট্রোকগুলো সংগ্রহ এবং তাদের ওপর বিভিন্ন পরিবর্তন করতে পারেন।
উদাহরণ: সব স্ট্রোকের রঙ পরিবর্তন করা
foreach (Stroke stroke in myInkCanvas.Strokes)
{
stroke.DrawingAttributes.Color = System.Windows.Media.Colors.Red;
}
৩. Saving and Loading Strokes
InkCanvas থেকে আঁকা স্ট্রোকগুলোর ডেটা Save এবং Load করা যায় XML ফরম্যাটে।
// Saving the strokes
using (MemoryStream memoryStream = new MemoryStream())
{
myInkCanvas.Strokes.Save(memoryStream);
File.WriteAllBytes("strokes.xml", memoryStream.ToArray());
}
// Loading the strokes
using (MemoryStream memoryStream = new MemoryStream(File.ReadAllBytes("strokes.xml")))
{
myInkCanvas.Strokes.Load(memoryStream);
}
৪. Manipulating Strokes
InkCanvas-এ স্ট্রোক ম্যানিপুলেশন যেমন মুভ, রোটেট, এবং সাইজিং করা যায়। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনি ডিজাইন বা স্কেচিং টুল তৈরি করছেন।
// Example: Moving a stroke
Stroke stroke = myInkCanvas.Strokes[0]; // Assuming there's at least one stroke
stroke.StylusPoints.Clear(); // Clear existing points
stroke.StylusPoints.Add(new StylusPoint(100, 100)); // Move stroke to a new position
Use Cases for InkCanvas
- Signature Capture:
- ডিজিটাল সাইনেচার ক্যাপচার করা, যেখানে ইউজার পেন দিয়ে সাইন করেন এবং তা সংরক্ষণ করা হয়।
- Drawing and Sketching:
- শিক্ষাপ্রতিষ্ঠান বা ডিজাইন অ্যাপ্লিকেশনগুলিতে স্কেচিং বা আঁকার জন্য উপযুক্ত।
- Annotation:
- ছবি বা ডকুমেন্টের উপরে অ্যানোটেশন যোগ করা (যেমন: পেন দিয়ে টেক্সট বা শেপ আঁকতে পারে)।
- Whiteboard Apps:
- একটি ডিজিটাল হোয়ারবোর্ড যেখানে শিক্ষার্থী বা ব্যবহারকারী তাদের ধারণা বা চিন্তা পেন দিয়ে আঁকতে পারে।
Conclusion
InkCanvas Control হল একটি শক্তিশালী টুল যা Windows অ্যাপ্লিকেশনে পেন, টাচ, বা স্টাইলাস ইনপুট সমর্থন করে। এটি ডিজিটাল অঙ্কন, সাইনেচার ক্যাপচার, এবং অ্যানোটেশনসহ নানা কাজে ব্যবহৃত হয়। InkCanvas এর মাধ্যমে সহজেই UI কন্ট্রোলের মাধ্যমে পেন ড্রইং, স্ট্রোক ম্যানিপুলেশন, সেভ/লোড ইত্যাদি ফিচার যোগ করা সম্ভব।
Read more