গত পর্বে ইমেজ অবজেক্টকে ফরমে ব্যবহার করার পদ্ধতি দেখানো হয়েছিল৷ এই পর্বে একজন প্রোগ্রামার কিভাবে তার নিজের ইচ্ছেমতো গ্রাফিক্স তৈরি করে ফরমে বা বিভিন্ন কম্পোনেন্টে ব্যবহার করতে পারেন তা দেখানো হয়েছে৷ ডট নেটে গ্রাফিক্সে কাজ করার জন্য একটি বিশেষ টুলস ব্যবহার করা হয়৷ এর নাম হলো GDI+ (Graphical Device Interface Plus)৷ GDI+ ব্যবহার করে বিভিন্ন ধরনের বস্তু (Shape) আঁকা, এগুলোর মধ্যে ফন্ট, বিভিন্ন রঙ, টেক্সার, ট্রান্সপারেন্সি ইত্যাদি ব্যবহার করা যায়৷ GDI+ টুলস ব্যবহারের সময় প্রোগ্রামে নিচের নেমস্পেসগুলো ব্যবহার করার প্রয়োজন হয়৷
System. Drawing :
এটি GDI+ এর জন্য ব্যবহৃত মূল নেমস্পেস৷ এর মধ্যে কোনো বস্তুর বেসিক ড্রয়িংয়ের জন্য প্রয়োজনীয় মেথড, নেমস্পেসগুলো রয়েছে৷
System. Drawing. Drawing2D :
এই নেমস্পেসের মধ্যে কোনো বস্তুর অ্যাডভান্সড টু ডাইমেনশনাল গ্রাফিক্স নিয়ে কাজ করার জন্য প্রয়োজনীয় মেথডগুলো রয়েছে৷
System. Drawing. Imaging :
গ্রাফিক্যাল ইমেজকে পরিবর্তন করার জন্য প্রয়োজনীয় মেথডগুলো এই নেমস্পেসের অন্তর্ভুক্ত৷
System. Drawing. Printing :
প্রিন্টারে একটি ইমেজকে প্রিন্ট করার জন্য যে প্রিন্টজব (Printjob) তৈরি করা হয় তাকে কন্ট্রোল করার জন্য প্রয়োজনীয় মেথডগুলো এই নেমস্পেসের মধ্যে রয়েছে৷
System. Drawing. Text :
বিভিন্ন ফন্টকে ইমেজের মধ্যে ব্যবহারের জন্য এই নেমস্পেসের মেথডগুলো প্রয়োজনীয়৷
ভিজ্যুয়াল বেসিক ২০০৫ ল্যাঙ্গুয়েজে তৈরি করা প্রোগ্রামে কিভাবে GDI+ টুলস ব্যবহার করা হয় এবার তা দেখানো হয়েছে৷
প্রথমে একটি উইন্ডোজ প্রজেক্টে নতুন একটি ফরম নিয়ে এর কোড উইন্ডোতে যেতে হবে৷ এরপর ফরমের OnPaint ইভেন্টে নিচের কোডগুলো লিখতে হবে৷
Private Sub btnThumbNail_Click _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnThumbNail.Click
PictureBox1.Image = PictureBox1.Image.
GetThumbnailImage(60, 60, Nothing, Nothing)
End Sub
সাধারণত গ্রাফিক্সের পরিবর্তনের জন্য যেকোনো কম্পোনেন্টের OnPaint বা Paint ইভেন্টে প্রয়োজনীয় কোড লিখতে হয়৷ যাহোক, এখন প্রোগ্রামটি রান করানো হলে নিচের চিত্রের মতো একটি স্ক্রিন মনিটরে দেখা যাবে৷
OnPaint সাব রুটিনটি ভিজ্যুয়াল বেসিকে সাধারণভাবে লোড হওয়া ফরমকে Override করে প্রোগ্রামারের ইচ্ছেনুযায়ী গ্রাফিক্সসহ ফরমটিকে লোড করানো হয়েছে৷ এই সাব রুটিনের PaintEventArgs প্যারামিটারের মাধ্যমে সিস্টেমের গ্রাফিক্স অবজেক্টকে Pass করানো হয়েছে৷
এবারে ফরম ছাড়া অন্য কোনো কম্পোনেন্টে গ্রাফিক্সের ব্যবহার দেখব৷ এর জন্য ফরমে একটি বাটন কম্পোনেন্ট যুক্ত করতে হবে এবং এর টেক্সট প্রোপার্টিতে থাকা টেক্সটি মুছে ফেলতে হবে৷ এরপর কোড উইন্ডোতে বাটনটি Paint ইভেন্টে নিচের কোডগুলো লিখতে হবে৷
Private Sub btnOriginal_Click _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnOriginal.Click
PictureBox1.Image = My.Resources.nature6
End Sub
এই ইভেন্টটিও ফরমের OnPaint ইভেন্টের মতো একইভাবে কাজ করে৷ এর ফলে ফরমে বাটনটি দেখতে নিচের চিত্রের মতো লাগবে৷
আমরা আগেই জেনেছি, GDI+ ব্যবহার করে ভেক্টর গ্রাফিক্স অঙ্কন করা যায়৷ এই ধরনের গ্রাফিক্স অঙ্কনের জন্য GDI+ এর অনেক মেথড রয়েছে৷ যেমন DrawLine, DrawArc, DrawPolygon, DrawCurve, DrawRectangle ইত্যাদি৷ আবার এগুলোকে বিভিন্ন রঙ বা প্যাটার্ন দিয়ে পূর্ণ করার জন্য আলাদা মেথড রয়েছে৷ যেমন : FillEllipse, FillPolygon, FillRegion ইত্যাদি৷ আজকের আলোচনার প্রথম অংশে ফরমে সরাসরি টেক্সট অঙ্কন করার পদ্ধতি দেখেছি৷ এবার DrawLine মেথড ব্যবহার করে একটি সরলরেখা অঙ্কনের পদ্ধতি দেখব৷
উইন্ডোজ প্রজেক্টটিতে নতুন আরেকটি ফরম যুক্ত করে ফরমটিকে প্রজেক্টের Startup ফরম হিসেবে তৈরি করে নিতে হবে৷ এবার ফরমে একটি Penel যুক্ত করে কোড উইন্ডোতে প্যানেলটির Paint ইভেন্টে প্রয়োজনীয় কোড লিখতে হবে৷
Private Sub btnRotateLeft_Click _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnRotateLeft.Click
PictureBox1.Image.RotateFlip(RotateFlipType.Rotate270FlipNone)
PictureBox1.Refresh()
End Sub
প্রোগ্রামের মাধ্যমে একটি সরলরেখা অঙ্কনের জন্য দুটি জিনিসের প্রয়োজন হবে৷ একটি ডট নেটের Pen অবজেক্ট এবং অন্যটি রেখাটির শুরু ও শেষ হওয়া বিন্দুর অবস্থান৷ Pen অবজেক্টের মাধ্যমে কোনো বস্তুকে অঙ্কনের জন্য সিস্টেমের রঙ বা ডট নেটের Brush অবজেক্ট এবং বস্তুটির Width-এর মান জানার প্রয়োজন হয়৷
কোড টাইপ করার পর প্রোগ্রামটি রান করানো হলে নিচের চিত্রের মতো একটি স্ক্রিন দেখা যাবে৷
একইভাবে GDI+ এর অন্য মেথডগুলো ব্যবহার করে বিভিন্ন আকারের বস্তু অঙ্কন করা যায়৷
ফিডব্যাক : marufn@gmail.com