MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশনগুলোতে পেইন্টিং এবং ড্রইং করতে CDC (Device Context) ক্লাস ব্যবহার করা হয়। এই ক্লাসটি গ্রাফিক্স, টেক্সট, এবং শেপস (যেমন, লাইন, রেকট্যাঙ্গেল, সার্কেল) আঁকার জন্য প্রয়োজনীয় সমস্ত ফাংশন সরবরাহ করে। MFC-তে পেইন্টিং এবং ড্রইং কৌশল ব্যবহারকারীর ইন্টারফেসে গ্রাফিকাল উপাদান যোগ করার জন্য গুরুত্বপূর্ণ।
পেইন্টিং কৌশল
MFC অ্যাপ্লিকেশনে পেইন্টিং সাধারণত OnPaint() মেসেজ হ্যান্ডলার ফাংশনের মধ্যে করা হয়। এই ফাংশনটি তখন কল হয় যখন উইন্ডো বা ডায়ালগ রিফ্রেশ বা রিপেইন্ট করার প্রয়োজন হয়। আপনি এখানে ড্রইং সম্পর্কিত সমস্ত কোড লিখতে পারেন।
1. OnPaint() ফাংশন ব্যবহার করা
OnPaint() হল একটি মেসেজ হ্যান্ডলার যা উইন্ডো রিফ্রেশ করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এখানে আপনি গ্রাফিকাল উপাদান আঁকতে পারেন।
Code Example:
void CMyDialog::OnPaint()
{
CPaintDC dc(this); // device context for painting
// Drawing a simple line
dc.MoveTo(10, 10); // starting point
dc.LineTo(200, 200); // ending point
// Drawing a rectangle
dc.Rectangle(50, 50, 150, 150);
// Drawing text
dc.TextOut(100, 200, _T("Hello, MFC!"));
}
এখানে, CPaintDC হল একটি ডিভাইস কনটেক্সট, যা পেইন্টিং ফাংশনের মধ্যে গ্রাফিকাল অপারেশন সম্পাদন করার জন্য ব্যবহৃত হয়।
ড্রইং কৌশল
MFC তে বিভিন্ন ধরনের গ্রাফিকাল উপাদান যেমন লাইট, পেন, ব্রাশ, রেকট্যাঙ্গেল, সার্কেল, পলিগন ইত্যাদি আঁকতে পারে। এদের আঁকার জন্য CDC ক্লাসের বিভিন্ন ফাংশন ব্যবহার করা হয়।
2. লাইন, রেকট্যাঙ্গেল, এবং সার্কেল আঁকা
CDC ক্লাসের মাধ্যমে আপনি সহজেই পেন, ব্রাশ, বা অন্যান্য ড্রইং টুল ব্যবহার করে বিভিন্ন শেপ আঁকতে পারেন।
Code Example:
void CMyDialog::OnPaint()
{
CPaintDC dc(this); // device context for painting
// Create a pen for drawing the line
CPen pen(PS_SOLID, 2, RGB(255, 0, 0)); // Red color, solid, 2-pixel width
CPen* pOldPen = dc.SelectObject(&pen); // Select the pen
// Draw a line
dc.MoveTo(10, 10);
dc.LineTo(200, 200);
// Create a brush for filling a rectangle
CBrush brush(RGB(0, 255, 0)); // Green color
CBrush* pOldBrush = dc.SelectObject(&brush); // Select the brush
// Draw a filled rectangle
dc.Rectangle(50, 50, 150, 150);
// Draw a circle (ellipse)
dc.Ellipse(200, 50, 300, 150);
// Restore the original objects
dc.SelectObject(pOldPen);
dc.SelectObject(pOldBrush);
}
এখানে:
- CPen পেন তৈরি করে যা লাইন আঁকার জন্য ব্যবহৃত হয়।
- CBrush ব্রাশ তৈরি করে যা রঙিন বা পূর্ণ আকারে রেকট্যাঙ্গেল বা অন্যান্য শেপ পূর্ণ করার জন্য ব্যবহৃত হয়।
3. পলিগন এবং আর্ক (Polygon and Arc)
পলিগন বা আর্ক আঁকতে আপনি Polygon() এবং Arc() ফাংশন ব্যবহার করতে পারেন। পলিগন আঁকার জন্য MoveTo() এবং LineTo() ব্যবহার করা হয়, যখন আর্ক আঁকার জন্য Arc() ফাংশন ব্যবহৃত হয়।
Code Example:
void CMyDialog::OnPaint()
{
CPaintDC dc(this); // device context for painting
// Draw a polygon
POINT points[] = { {10, 10}, {50, 50}, {100, 10}, {50, -30} };
dc.Polygon(points, 4);
// Draw an arc
dc.Arc(150, 150, 300, 300, 200, 200, 250, 250);
}
এখানে:
- Polygon() একটি পলিগন আঁকতে ব্যবহৃত হয়।
- Arc() একটি আর্ক (অর্ধবৃত্ত বা আংশিক বৃত্ত) আঁকতে ব্যবহৃত হয়।
ড্রইং অপটিমাইজেশন
MFC অ্যাপ্লিকেশনগুলিতে পেইন্টিং ও ড্রইং কার্যক্রম সাধারণত ব্যয়বহুল হতে পারে, বিশেষত যখন উইন্ডোটি অনেকবার রিফ্রেশ হয়। এর জন্য, আপনি Invalidate() এবং UpdateWindow() ফাংশনগুলো ব্যবহার করে পেইন্টিং প্রক্রিয়া অপটিমাইজ করতে পারেন।
- Invalidate(): এটি উইন্ডোর একটি অংশ বা সম্পূর্ণ উইন্ডোকে অবৈধ (invalid) করে দেয়, যাতে পরবর্তী সময়ে পেইন্টিং রিকোয়েস্ট করা যায়।
- UpdateWindow(): এটি অবৈধ অংশের পেইন্টিং প্রসেস শুরু করে।
সারাংশ
MFC অ্যাপ্লিকেশনে পেইন্টিং এবং ড্রইং করার জন্য CDC ক্লাস অত্যন্ত গুরুত্বপূর্ণ। OnPaint() ফাংশনের মাধ্যমে আপনি গ্রাফিক্স আঁকতে পারেন, এবং বিভিন্ন গ্রাফিকাল উপাদান (যেমন লাইন, রেকট্যাঙ্গেল, সার্কেল, পলিগন, আর্ক ইত্যাদি) আঁকতে CPen, CBrush ব্যবহার করা হয়। এছাড়া, পেইন্টিং অপটিমাইজেশন নিশ্চিত করার জন্য Invalidate() এবং UpdateWindow() ফাংশন ব্যবহার করা হয়।
MFC (Microsoft Foundation Classes) তে OnPaint এবং OnDraw হল গ্রাফিক্যাল কন্ট্রোল বা কাস্টম ড্রয়িং ইন্টারফেস তৈরি করতে ব্যবহৃত দুটি গুরুত্বপূর্ণ মেথড। এগুলি ডায়ালগ, উইন্ডো বা কাস্টম কন্ট্রোলের মধ্যে গ্রাফিক্যাল কন্টেন্ট যেমন ছবি, লাইন, রেকট্যাঙ্গেল, টেক্সট ইত্যাদি অঙ্কন করতে ব্যবহৃত হয়।
OnPaint মেথড
OnPaint হল একটি উইন্ডো মেসেজ হ্যান্ডলার, যা উইন্ডো বা ডায়ালগ রিফ্রেশ হওয়ার সময় বা যখন উইন্ডো পুনরায় দৃশ্যমান হয় তখন কল হয়। যখন উইন্ডোর কন্টেন্ট পুনরায় রেন্ডার করতে হয় (যেমন, যখন উইন্ডো সাইজ পরিবর্তিত হয় বা উইন্ডোটি সর্বত্র দেখা যায়), তখন এই মেথডটি কল হয়।
OnPaint মেথড ব্যবহার করে গ্রাফিক্স ড্র করা হয়, বিশেষ করে CDC (Device Context) অবজেক্ট ব্যবহার করে, যা আপনাকে পেইন্টিংয়ের জন্য গ্রাফিক্যাল ডিভাইসের সাথে যোগাযোগ করতে দেয়।
OnPaint মেথডের ব্যবহার
- CDC Object: ড্রইংয়ের জন্য, প্রথমে একটি CDC অবজেক্ট তৈরি করতে হয় যা গ্রাফিক্স রেন্ডার করতে সাহায্য করে।
- CPaintDC Object: MFC তে CPaintDC ক্লাসটি CDC থেকে ইনহেরিট করা হয় এবং এটি পেইন্টিং কানভাসের জন্য ব্যবহৃত হয়।
Code Example:
void CMainFrame::OnPaint()
{
CPaintDC dc(this); // device context for painting
// Set the pen color
CPen pen(PS_SOLID, 1, RGB(255, 0, 0)); // Red pen
dc.SelectObject(&pen);
// Draw a line from (10, 10) to (200, 200)
dc.MoveTo(10, 10);
dc.LineTo(200, 200);
// Draw text
dc.TextOut(50, 50, _T("Hello, MFC!"));
}
এই উদাহরণে, OnPaint মেথডে CPaintDC ব্যবহার করা হয়েছে, যা পেইন্টিং প্রসেসের জন্য ডিভাইস কন্টেক্সট তৈরি করে। তারপর একটি লাল রঙের CPen ব্যবহার করে একটি লাইন এবং টেক্সট ড্র করা হয়েছে।
OnDraw মেথড
OnDraw মেথডটি সাধারণত CView ক্লাসের মধ্যে ব্যবহৃত হয় এবং এটি একটি কাস্টম ড্রয়িং রুটিন হিসেবে কাজ করে। যদি আপনি একটি কাস্টম ভিউ তৈরি করেন (যেমন CFormView বা CListView), তবে আপনি OnDraw মেথডটি পুনঃসংজ্ঞায়িত (override) করতে পারেন, যাতে আপনি পেইন্টিং লজিক যোগ করতে পারেন।
OnDraw মেথডটি CDC অবজেক্ট ব্যবহার করে গ্রাফিক্স রেন্ডার করতে সহায়তা করে, তবে এটি সাধারণত CView অবজেক্টের জন্য ব্যবহৃত হয়, যেখানে ড্রয়িং প্রয়োজন হয়।
OnDraw মেথডের ব্যবহার
OnDraw মেথডে গ্রাফিক্স ড্র করার জন্য, একটি CDC অবজেক্ট ব্যবহার করা হয়, কিন্তু এই ক্ষেত্রে এটি CView বা তার subclass এর জন্য কাজ করে।
Code Example:
void CMyView::OnDraw(CDC* pDC)
{
// Draw a rectangle
CRect rect(50, 50, 200, 200);
pDC->Rectangle(rect);
// Set font and draw text
CFont font;
font.CreatePointFont(120, _T("Arial"));
CFont* pOldFont = pDC->SelectObject(&font);
pDC->TextOut(60, 60, _T("Drawing in CView"));
// Restore old font
pDC->SelectObject(pOldFont);
}
এখানে OnDraw মেথডের মধ্যে CDC প্যারামিটার হিসেবে পাস করা হয়, যা পেইন্টিং প্রসেসের জন্য ব্যবহার করা হয়। এই উদাহরণে একটি রেকট্যাঙ্গেল এবং টেক্সট ড্র করা হয়েছে, এবং একটি কাস্টম ফন্ট ব্যবহার করা হয়েছে।
OnPaint এবং OnDraw এর মধ্যে পার্থক্য
- OnPaint: এটি সাধারণত উইন্ডোর বা ডায়ালগের ডিফল্ট পেইন্টিং লজিক এবং কাস্টম পেইন্টিং রেন্ডার করার জন্য ব্যবহৃত হয়। এটি উইন্ডো রিফ্রেশের সময় স্বয়ংক্রিয়ভাবে কল হয়।
- OnDraw: এটি কাস্টম ভিউ ক্লাসের জন্য ব্যবহৃত হয় এবং ম্যানুয়ালি ড্রিং লজিক প্রোগ্রাম করা হয়। এটি সাধারণত CView বা এর subclass-এ ব্যবহৃত হয়, যেখানে CDC প্যারামিটার দিয়ে পেইন্টিং করা হয়।
সারাংশ
OnPaint এবং OnDraw মেথড MFC তে গ্রাফিক্স রেন্ডার করার জন্য গুরুত্বপূর্ণ টুল। OnPaint মেথড সাধারণত উইন্ডোর রিফ্রেশ এবং কাস্টম ড্রয়িংয়ের জন্য ব্যবহৃত হয়, যেখানে OnDraw মেথড কাস্টম ভিউগুলোর জন্য ব্যবহৃত হয় এবং এটি একটি কাস্টম ড্রয়িং রুটিন হিসেবে কাজ করে। উভয় মেথডই CDC অবজেক্ট ব্যবহার করে গ্রাফিক্স অঙ্কন করতে সহায়তা করে।
GDI (Graphics Device Interface) হল Windows-এ গ্রাফিক্স এবং প্রিন্টিং এর জন্য একটি API (Application Programming Interface), যা ডিভাইস থেকে ইমেজ রেন্ডারিং এবং গ্রাফিক্স প্রক্রিয়া পরিচালনা করতে ব্যবহৃত হয়। এটি গ্রাফিক্স, টেক্সট, লাইন, শেপ, এবং রেন্ডারিং প্রক্রিয়ার সাথে সম্পর্কিত ফাংশন সরবরাহ করে। MFC অ্যাপ্লিকেশনগুলিতে GDI ব্যবহারের মাধ্যমে ইউজার ইন্টারফেসে গ্রাফিক্যাল এলিমেন্ট যোগ করা যায়, যেমন ড্রয়িং, পেইন্টিং, এবং টেক্সট ডিসপ্লে।
GDI এর মৌলিক উপাদান
GDI বিভিন্ন উপাদান এবং কনসেপ্টের মাধ্যমে কাজ করে। কিছু গুরুত্বপূর্ণ উপাদান:
- Device Context (DC): এটি হল একটি ডাটা স্ট্রাকচার যা ডিভাইসের গ্রাফিক্যাল বৈশিষ্ট্য ধারণ করে।
CDCক্লাসটি MFC তে Device Context কে রিপ্রেজেন্ট করে। - Pen: লাইন আঁকার জন্য ব্যবহৃত হয়।
- Brush: শেপ এবং ফিলিংয়ের জন্য ব্যবহৃত হয়।
- Font: টেক্সট আঁকার জন্য ব্যবহৃত হয়।
- Bitmap: ইমেজ রেন্ডার করার জন্য ব্যবহৃত হয়।
- Region: একটি আকার বা সিলেক্টেড এরিয়া তৈরি করতে ব্যবহৃত হয়।
GDI এর সাথে ড্রয়িং করা
GDI ব্যবহার করে বিভিন্ন গ্রাফিক্স উপাদান আঁকা যায়, যেমন লাইন, আয়তক্ষেত্র, বৃত্ত, এবং আরো অনেক কিছু। নিচে GDI ব্যবহার করে একটি সাধারণ লাইন আঁকার উদাহরণ দেওয়া হলো।
Code Example:
void CMyView::OnDraw(CDC* pDC)
{
// কালার নির্বাচন
pDC->SetTextColor(RGB(0, 0, 255)); // ব্লু কালার
pDC->SetBkColor(RGB(255, 255, 255)); // হোয়াইট ব্যাকগ্রাউন্ড
// লাইন আঁকা
pDC->MoveTo(10, 10); // লাইন শুরু পয়েন্ট
pDC->LineTo(200, 200); // লাইন শেষ পয়েন্ট
// আয়তক্ষেত্র আঁকা
pDC->Rectangle(50, 50, 150, 150);
}
এখানে OnDraw() ফাংশনটি ব্যবহার করে, একটি blue line এবং একটি rectangle আঁকা হচ্ছে।
টেক্সট রেন্ডারিং
GDI এর মাধ্যমে টেক্সট রেন্ডার করা খুবই সাধারণ। MFC তে টেক্সট রেন্ডার করতে CDC::TextOut() মেথডটি ব্যবহার করা হয়। এছাড়া টেক্সটের জন্য বিভিন্ন ফন্ট এবং স্টাইল নির্বাচনও করা যায়।
Code Example:
void CMyView::OnDraw(CDC* pDC)
{
// ফন্ট সেট করা
CFont font;
font.CreatePointFont(120, _T("Arial"));
pDC->SelectObject(&font);
// টেক্সট আঁকা
pDC->TextOut(50, 50, _T("Hello, MFC!"));
}
এখানে CreatePointFont() ফাংশন দিয়ে একটি ফন্ট তৈরি করা হয়েছে এবং TextOut() দিয়ে একটি টেক্সট রেন্ডার করা হয়েছে।
GDI-এ পেইন্টিং
MFC তে OnPaint() মেসেজ হ্যান্ডলার ব্যবহার করে GDI এর মাধ্যমে পেইন্টিং করা হয়। এই মেসেজ হ্যান্ডলারটি উইন্ডো বা কন্ট্রোল রেন্ডার করার সময় কল হয়।
Code Example:
void CMyView::OnPaint()
{
CPaintDC dc(this); // ডিভাইস কনটেক্সট পেতে
OnDraw(&dc); // ড্রয়িং রেন্ডার করা
}
এখানে CPaintDC একটি ডিভাইস কনটেক্সট তৈরি করে, এবং তারপর OnDraw() ফাংশনটি কল করা হয় যা গ্রাফিক্স এবং টেক্সট আঁকতে সহায়তা করে।
GDI Object ব্যবহার
GDI কন্ট্রোলের বিভিন্ন উপাদান যেমন Pen, Brush, Font ইত্যাদি, MFC এর মাধ্যমে ব্যবহার করা যায়। এই উপাদানগুলিকে GDI objects বলা হয়।
- Pen: লাইন আঁকার জন্য ব্যবহৃত হয়।
- Brush: শেপ আঁকার জন্য ব্যবহৃত হয়।
- Font: টেক্সট রেন্ডারিং করার জন্য ব্যবহৃত হয়।
Code Example:
void CMyView::OnDraw(CDC* pDC)
{
// Pen তৈরি করা
CPen pen(PS_SOLID, 5, RGB(255, 0, 0)); // লাল রঙের পেন
pDC->SelectObject(&pen);
// Brush তৈরি করা
CBrush brush(RGB(0, 255, 0)); // সবুজ রঙের ব্রাশ
pDC->SelectObject(&brush);
// একটি আয়তক্ষেত্র আঁকা
pDC->Rectangle(100, 100, 200, 200);
}
এখানে Pen এবং Brush তৈরি করে একটি আয়তক্ষেত্র আঁকা হয়েছে।
সারাংশ
GDI (Graphics Device Interface) হল Windows প্ল্যাটফর্মে গ্রাফিক্স রেন্ডারিং এবং ডিভাইসের সাথে ইন্টারঅ্যাকশন করার জন্য ব্যবহৃত একটি শক্তিশালী টুল। MFC অ্যাপ্লিকেশনে GDI ব্যবহার করে আমরা গ্রাফিক্স, টেক্সট, শেপ, এবং অন্যান্য গ্রাফিক্যাল উপাদান ড্র করতে পারি। GDI এর সাহায্যে Device Context, Pen, Brush, Font এবং অন্যান্য গ্রাফিক্যাল অবজেক্ট ব্যবহার করে সুন্দর ইউজার ইন্টারফেস তৈরি করা যায়। GDI একটি অ্যাপ্লিকেশনকে ডিভাইসের সাথে যুক্ত করে, এটি স্ক্রীন, প্রিন্টার, অথবা অন্য কোন আউটপুট ডিভাইসে গ্রাফিক্স রেন্ডার করতে সক্ষম করে।
MFC (Microsoft Foundation Classes) এ গ্রাফিক্স অ্যানিমেশন, ড্রয়িং, এবং কাস্টম পেইন্টিং করার জন্য Pen, Brush, এবং অন্যান্য গ্রাফিক্স অবজেক্ট ব্যবহার করা হয়। এগুলি ব্যবহার করে আপনি উইন্ডো বা ডায়ালগ বক্সে বিভিন্ন গ্রাফিক্যাল উপাদান যেমন লাইন, রেকটেঙ্গেল, বৃত্ত, পাথ ইত্যাদি আঁকতে পারেন।
পেন (Pen)
Pen হল একটি গ্রাফিক্যাল অবজেক্ট যা দিয়ে আপনি লাইন আঁকতে পারেন। পেনের বিভিন্ন বৈশিষ্ট্য থাকে, যেমন লাইন স্টাইল (Solid, Dashed, Dotted), কালার এবং বেধ (Width)।
Pen ব্যবহার করার জন্য প্রথমে CPen ক্লাস ব্যবহার করে একটি পেন অবজেক্ট তৈরি করতে হয়, এরপর সেই পেনটি CDC (Device Context) এ ব্যবহার করা হয়।
Code Example:
CPen pen(PS_SOLID, 3, RGB(255, 0, 0)); // Red color, solid line, 3 pixels width
pDC->SelectObject(&pen); // Select the pen into the device context
pDC->MoveTo(10, 10); // Set starting point
pDC->LineTo(100, 100); // Draw a line from (10,10) to (100,100)
এখানে একটি Solid Red Pen তৈরি করা হয়েছে যার বেধ ৩ পিক্সেল এবং এটি CDC তে সিলেক্ট করা হয়েছে।
ব্রাশ (Brush)
Brush হল একটি গ্রাফিক্যাল অবজেক্ট যা দিয়ে আপনি ফিলিং (পৃষ্ঠতল পূর্ণ) করতে পারেন। এটি ব্যবহার করে আপনি রেকটেঙ্গেল, এলিপ্স, পলিগন ইত্যাদি আকার পূর্ণ করতে পারেন। ব্রাশের মধ্যে রঙ, প্যাটার্ন, গ্রেডিয়েন্ট ইত্যাদি থাকতে পারে।
Brush ব্যবহার করতে CBrush ক্লাস ব্যবহার করা হয়। CDC তে ব্রাশ সিলেক্ট করা হয় এবং তারপর সেটি দিয়ে ফিলিং করা হয়।
Code Example:
CBrush brush(RGB(0, 255, 0)); // Green color brush
pDC->SelectObject(&brush); // Select the brush into the device context
pDC->Rectangle(10, 10, 100, 100); // Draw and fill a rectangle
এখানে একটি Green Brush তৈরি করা হয়েছে এবং সেটি দিয়ে একটি রেকটেঙ্গেল ফিল করা হয়েছে।
অন্যান্য গ্রাফিক্স অবজেক্ট
MFC তে Pen এবং Brush ছাড়া আরও অনেক গ্রাফিক্স অবজেক্ট ব্যবহার করা যায়। কিছু গুরুত্বপূর্ণ গ্রাফিক্স অবজেক্টের মধ্যে রয়েছে:
১. Font
Font ব্যবহার করে আপনি টেক্সটের ফন্ট স্টাইল, সাইজ, কালার ইত্যাদি কাস্টমাইজ করতে পারেন। এটি সাধারণত টেক্সট ড্রয়িং করার সময় ব্যবহৃত হয়।
Code Example:
CFont font;
font.CreatePointFont(120, _T("Arial")); // Create font with 12 pt size and Arial
pDC->SelectObject(&font); // Select the font into the device context
pDC->TextOut(10, 120, _T("Hello, MFC!")); // Draw text at (10, 120)
এটি একটি Arial ফন্ট তৈরি করবে যার সাইজ 12 পয়েন্ট এবং তারপর TextOut ফাংশন দিয়ে টেক্সট প্রদর্শন করবে।
২. Polygon (পলিগন)
Polygon হল এমন একটি গ্রাফিক্যাল অবজেক্ট যা একাধিক পয়েন্টের মাধ্যমে একটি সিল করা আকার তৈরি করে। এটি একটি ক্লোজড শেপ হিসেবে কাজ করে।
Code Example:
POINT points[3] = { {10, 10}, {100, 10}, {50, 50} };
pDC->Polygon(points, 3); // Draw a triangle using points array
এখানে একটি Triangle আঁকা হয়েছে যার পয়েন্টগুলো points অ্যারে দ্বারা নির্ধারিত।
৩. Ellipse (এলিপ্স)
Ellipse হল একটি বৃত্তাকার আকৃতি, যা একটি রেকটেঙ্গেলের ভিতর আঁকা হয়। এটি সাধারণত একটি ডায়াগ্রাম বা শেপ ড্রয়িংয়ের জন্য ব্যবহৃত হয়।
Code Example:
pDC->Ellipse(10, 10, 100, 100); // Draw an ellipse inside a rectangle (10, 10) to (100, 100)
এটি একটি Ellipse আঁকবে যা রেকটেঙ্গেলের ভিতর অবস্থান করবে।
গ্রাফিক্স অবজেক্ট ব্যবহারের জন্য কিছু গুরুত্বপূর্ণ পদ্ধতি
MFC তে গ্রাফিক্স অবজেক্ট ব্যবহার করার সময়, CDC ক্লাসের বিভিন্ন পদ্ধতি ব্যবহৃত হয়, যেমন:
- SelectObject(): পেন, ব্রাশ, ফন্ট ইত্যাদি ডিভাইস কন্টেক্সটে নির্বাচন করার জন্য ব্যবহৃত হয়।
- MoveTo() এবং LineTo(): একটি লাইন আঁকতে ব্যবহৃত হয়।
- Rectangle(): একটি রেকটেঙ্গেল আঁকতে ব্যবহৃত হয়।
- Ellipse(): একটি এলিপ্স আঁকতে ব্যবহৃত হয়।
- TextOut(): টেক্সট আঁকার জন্য ব্যবহৃত হয়।
সারাংশ
MFC তে Pen, Brush, এবং অন্যান্য গ্রাফিক্স অবজেক্ট ব্যবহার করে অ্যাপ্লিকেশনে কাস্টম গ্রাফিক্স ড্রয়িং এবং পেইন্টিং করা হয়। Pen লাইন আঁকার জন্য, Brush বিভিন্ন শেপ ফিল করার জন্য, এবং Font টেক্সট স্টাইল কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এছাড়া, Polygon, Ellipse এবং অন্যান্য গ্রাফিক্যাল অবজেক্টের মাধ্যমে বিভিন্ন আকৃতি আঁকা যায়। MFC এর গ্রাফিক্স ফিচারগুলি ব্যবহারকারীর ইন্টারফেসে আকর্ষণীয় এবং কাস্টমাইজড গ্রাফিক্স উপাদান যুক্ত করার জন্য অত্যন্ত কার্যকর।
MFC (Microsoft Foundation Classes) ব্যবহার করে গ্রাফিক্স ড্র করার জন্য আপনি ডিভাইস কনটেক্সট (DC, Device Context) ব্যবহার করতে পারেন। Bitmap, Line, এবং Shape ড্র করার মাধ্যমে আপনার অ্যাপ্লিকেশনের ভিজ্যুয়াল ইন্টারফেসে বিভিন্ন ধরনের গ্রাফিক্স প্রদর্শন করা সম্ভব। MFC তে গ্রাফিক্স ড্র করার জন্য বিভিন্ন ফাংশন ব্যবহার করা হয়, যেমন MoveTo, LineTo, Ellipse, Rectangle, DrawBitmap ইত্যাদি।
এখানে Bitmap, Line, এবং Shape ড্র করার কিছু মৌলিক ধারণা এবং উদাহরণ আলোচনা করা হলো।
বিটম্যাপ (Bitmap) ড্র করা
Bitmap হল একটি গ্রাফিক্স ফাইল ফরম্যাট, যা চিত্রের পিক্সেল ডেটা ধারণ করে। MFC তে Bitmap ড্র করার জন্য CBitmap ক্লাস ব্যবহার করা হয়, যা আপনার অ্যাপ্লিকেশনে একটি ইমেজ বা গ্রাফিক্স ফাইল লোড ও প্রদর্শন করতে সহায়তা করে।
Code Example: Bitmap ড্র করা
void CMyView::OnDraw(CDC* pDC)
{
CBitmap bitmap;
bitmap.LoadBitmap(IDB_MY_BITMAP); // IDB_MY_BITMAP হল বিটম্যাপ রিসোর্স
// DC এর মধ্যে বিটম্যাপ ড্র করা
BITMAP bm;
bitmap.GetBitmap(&bm);
pDC->SetMapMode(MM_TEXT);
pDC->SetViewportOrg(0, 0);
pDC->DrawState(CPoint(10, 10), CSize(bm.bmWidth, bm.bmHeight), &bitmap, DSS_NORMAL);
}
এখানে, LoadBitmap() ফাংশন ব্যবহার করে বিটম্যাপ লোড করা হচ্ছে এবং তারপর DrawState() ফাংশন ব্যবহার করে এটি উইন্ডোতে ড্র করা হচ্ছে।
লাইন (Line) ড্র করা
Line ড্র করার জন্য MFC তে MoveTo এবং LineTo ফাংশন ব্যবহার করা হয়। প্রথমে MoveTo দ্বারা পয়েন্ট সেট করা হয় এবং তারপর LineTo দিয়ে সেই পয়েন্টের মধ্যে একটি লাইন ড্র করা হয়।
Code Example: Line ড্র করা
void CMyView::OnDraw(CDC* pDC)
{
// কালার সেট করা
pDC->SetPen(PS_SOLID, 2, RGB(255, 0, 0)); // লাল রঙের লাইন
// পয়েন্টের মধ্যে লাইন ড্র করা
pDC->MoveTo(10, 10);
pDC->LineTo(200, 200);
}
এখানে, প্রথমে MoveTo(10, 10) পয়েন্টে মুভ করা হয় এবং তারপর LineTo(200, 200) দিয়ে একটি লাইন ড্র করা হয়। লাইনটি লাল রঙে এবং ২ পিক্সেল প্রস্থে ড্র হবে।
শেপ (Shape) ড্র করা
MFC তে বিভিন্ন ধরনের Shape ড্র করা সম্ভব, যেমন Rectangle, Ellipse, Polygon ইত্যাদি। প্রতিটি শেপের জন্য আলাদা ফাংশন থাকে, যেমন Rectangle(), Ellipse(), Polygon() ইত্যাদি।
Code Example: Rectangle ড্র করা
void CMyView::OnDraw(CDC* pDC)
{
// কালার সেট করা
pDC->SetBrushOrg(0, 0); // ব্রাশের প্যাটার্ন সেট করা
pDC->SetBkColor(RGB(0, 255, 0)); // সবুজ ব্যাকগ্রাউন্ড
// একটি রেকটেঙ্গেল ড্র করা
pDC->Rectangle(50, 50, 200, 200);
}
এখানে, Rectangle(50, 50, 200, 200) ফাংশনটি একটি রেকটেঙ্গেল ড্র করবে যার উপরের বাম কোণ (50, 50) এবং নীচের ডান কোণ (200, 200)।
Code Example: Ellipse ড্র করা
void CMyView::OnDraw(CDC* pDC)
{
// কালার সেট করা
pDC->SetBrushOrg(0, 0);
pDC->SetBkColor(RGB(0, 0, 255)); // নীল ব্যাকগ্রাউন্ড
// একটি এলিপস ড্র করা
pDC->Ellipse(50, 50, 200, 150);
}
এখানে, Ellipse(50, 50, 200, 150) ফাংশনটি একটি এলিপস (গোলাকার আকার) ড্র করবে।
Code Example: Polygon ড্র করা
void CMyView::OnDraw(CDC* pDC)
{
// পলিগনের পয়েন্টের অ্যারে তৈরি করা
CPoint points[4] = { CPoint(10, 10), CPoint(200, 10), CPoint(200, 200), CPoint(10, 200) };
// পলিগন ড্র করা
pDC->Polygon(points, 4);
}
এখানে, Polygon(points, 4) একটি চতুর্ভুজ পলিগন ড্র করবে, যার চারটি কোণ রয়েছে (10, 10), (200, 10), (200, 200), এবং (10, 200)।
সারাংশ
MFC তে Bitmap, Line, এবং Shape ড্র করার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের ভিজ্যুয়াল ইন্টারফেসে গ্রাফিক্স উপাদান যোগ করতে পারেন। Bitmap ব্যবহার করে ইমেজ বা গ্রাফিক্স ফাইল লোড করা যায়, Line দিয়ে পয়েন্টের মধ্যে লাইন আঁকা যায়, এবং Shape (যেমন রেকটেঙ্গেল, এলিপস, পলিগন) ড্র করার জন্য MFC তে নির্দিষ্ট ফাংশন ব্যবহার করা হয়। এই সব কন্ট্রোলস দিয়ে আপনি আপনার অ্যাপ্লিকেশনের ইউজার ইন্টারফেসে গ্রাফিক্যাল উপাদান সহজেই সংযুক্ত করতে পারেন।
Read more