মঙ্গলবার, ৫ এপ্রিল, ২০১১

WPF (Windows Presentation Foundation) - 05

রঙ-চং
গত চারটি পর্বে অনেক রস-কসহীন আলাপ হয়েছে। তাই এই পর্বে রঙিন আলাপ করতে চাই। WPF আসলে সত্যিকারের গ্রাফিকাল প্রোগ্রামিং, যেখানে কালারের এত সুন্দর কাজ আগে কোন ল্যাংগুয়েজ দ্বারা করা সম্ভব ছিল না। রঙের কাজ করার জন্য কয়েকটা বিষয় আমাদের বুঝতেই হবে।
  • Pen: Pen দ্বারা আসলে একটা লাইন বা কোন বর্ডারের কালারকে বুঝনো হয়। Pen কে আমরা আমাদের লেখার কলমের সাথে তুলনা করতে পারি। যেটা দিয়ে চিকন দাগ দেয়া যায়। Stroke প্রপার্টি দিয়ে Pen এর কাজ করা হয়ে থাকে। কোডে দেখি কিভাবে Stroke দিয়ে পেনের কাজ করা হয়
<Grid> <Viewbox Width="500" Stretch="Uniform" Height="40"> <Line X1="0" Y1="1" X2="80" Y2="1" Stroke="Black" StrokeDashArray="3" StrokeDashCap="Triangle"/> </Viewbox> </Grid>

এর আউটপুট নিচের মত

ব্যাখ্যাঃ
  • ViewBox কোয়ালিটি ঠিক রেখে তার ভিতরের কন্ট্রোলকে সম্পূর্ণ যায়গা ব্যাবহার করতে দেয়, যেন সব কিছু সমহারে বড় হতে পারে।
  • Line ট্যাগের মাধ্যমে লাইন টানা যায়। X1 ও Y1 দিয়ে লাইনের শুরু এবং X2 ও Y2 লাইনের শেষ নির্ধারন করা হয়।
  • Stroke দিয়ে Pen এর রঙ ঠিক করা হয়
  • StrokeDashArray বুঝায় কত পরপর ডেশ দেয়া হবে
  • StrokeDashCap মানে হচ্ছে ডেশের মাথা কেমন হবে
আরেকটা উদাহরণ দেখেনঃ
<Ellipse Height="100" Width="100" Stroke="Red" StrokeDashArray="2" StrokeDashCap="Square" StrokeThickness="5" />
আউটপুট নিচের মতঃ

আশা করি স্ট্রোকের কাজ বুঝতে সক্ষম হয়েছেন।

Brush: Brush দ্বারা কোন এরিয়ার কালার কি হবে তা বুঝানো হয়। আমরা একে অনেকটা রঙের ব্রাশ দিয়ে কোন জায়গা রঙ করার মত চিন্তা করতে পারি। ব্রাশের কাজ Fill দিয়ে করা হয়। নিচের কোড দেখুন
<Ellipse Height="100" Width="200" Stroke="Blue" StrokeThickness="5"> <Ellipse.Fill> <SolidColorBrush Color="Cyan" /> </Ellipse.Fill> </Ellipse>

আউটপুট নিচের মতঃ


ব্যাখ্যাঃ
  • Ellipse.Fill দ্বারা সম্পুর্ণ জায়গা করা হবে তা বুঝানো হয়েছে।
  • SolidColorBrush দ্বারা কালার ঠিক করা হয়েছে।
এতটুকুই সব না। মানুষ আরো বেশি কিছু চায়। গ্রাডিয়েন্ট মানে হচ্ছে একটা রঙ আরেকটা রঙের মাঝে ঢুকে যাওয়া। WPF দিয়ে অতি সহজেই গ্রাডিয়েন্ট কালার করা যায়। দুই রকম গ্রাডিয়েন্ট রয়েছে। একটা লম্বা-লম্বি না লিনিয়ার গ্রাডিয়েন্ট অন্যটা রেডিয়াল গ্রাডিয়েণ্ট।

lineargradientBrush: lineargradientBrush এর মাধ্যমে একাধিক কালারের মিশ্রণ পাওয়া সম্ভব। নিচে কোড দেখি এবং বুঝতে চেস্টা করি
<Rectangle Width="200" Height="150" Stroke="Black" StrokeThickness="5"> <Rectangle.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="Yellow" Offset="0" /> <GradientStop Color="Green" Offset=".7" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle>

আউটপুট নিচের মত হবেঃ

ব্যাখ্যাঃ
  • Rectangle এর মাধ্যমে একটা চতুর্ভুজ নেয়া হয়েছে
  • Rectangle.Fill এর মাধ্যমে চতুর্ভুজকে রঙ করা হবে তা বুঝানো হয়েছে। LinearGradientBrush দ্বারা রঙ কোথা থেকে শুরু হবে এবং কোথায় শেষ হবে তা বুঝায় StartPoint এবং EndPoin দ্বারা। এখানে x এবং y অক্ষের শুরু হয় উপরে বাম কর্নার থেকে, অর্থাৎ উপরের বাম কর্নারে x=0, y=0 এবং নিচে ডান কর্নারে x=1, y=1
  • GradientStop এর দ্বরা বুঝানো হয় ঠিক কোথায় কালারের ঘনত্ব বেশি হবে। মানে গ্রাডিয়েন্ট শেষ হবে।
radialgradientBrush: এর দ্বারা বৃত্তকে গ্রাডিয়েন্ট কালার দেয়া যায়। কোড দেখুন
<Ellipse Width="200" Height="150" Stroke="Black" StrokeThickness="4">
<Ellipse.Fill>
<RadialGradientBrush GradientOrigin=".5,.5">
<GradientStop Color="Red" Offset="0" />
<GradientStop Color="Black" Offset="1" />
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>

আউটপুট দেখুনঃ

ব্যাখ্যাঃ আগের মতই। আরো বিস্তারিত জানতে মাইক্রোসফটের সাহায্য দেখে নিন।
সাহায্য-১

সাহায্য-২

এই পর্ব এখানেই শেষ। অন্য সব পর্বের মত আবারো বলি, এখান থেকে আপনি WPF সম্পর্কে ধারনা পাবেন, কিন্তু এক্সপার্ট হতে হলে বই, ইন্টারনেটে ঘাটা-ঘাটি করতে পরামর্শ ধন্যবাদ সহকারে গৃহীত হবে। হ্যাপি লারনিং ;-)

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন