Tuesday, October 17, 2017

C# Lessons, Myanmar Flag


C# ရဲ႕ Graphic ပိုင္းကို ေလ့လာရင္း ႏိုင္ငံေတာ္အလံကို တစ္ခါေလာက္ ဆြဲၾကည့္တာပါ။ Code လဲ သိပ္မခက္၊ လုပ္ရတာလဲ လြယ္ကူတာမို႕ ျပန္လည္ ေဝမွ်ေပးလိုက္ပါတယ္။ ဒီသင္ခန္းစာထဲမွာ Rectangle Box ေရးဆြဲပံု၊ Star ေရးဆြဲပံုေလးပါဝင္တာမို႕ စိတ္ဝင္စားသူမ်ား ကုဒ္ကို Download ဆြဲၿပီး ေလ့လာႏိုင္ပါတယ္။

ဒီထဲမွာ အဓိက အသံုးျပဳထားတာကေတာ့ DrawFlag ဆိုတဲ့ Method နဲ႕ DrawStar ဆိုတဲ့ Method ပဲ ျဖစ္ပါတယ္။ အလံကို စဆြဲဖို႕စဥ္းစားတဲ့အခါ ကၽြန္ေတာ္ ေနာက္ခံ အေရာင္ေတြကို အရင္စဥ္းစားျဖစ္ပါတယ္။ လက္ရွိျမန္မာႏိုင္ငံအလံမွာ ဝါစိမ္းနီ သံုးေရာင္ကို Background အေနနဲ႕ အသံုးျပဳထားပါတယ္။ ဒါေၾကာင့္

g.FillRectangle(yellowBrush, x0, y0, width, height/3);

g.FillRectangle(greenBrush, x0, y0 + 2 * 1 * height / 6, width, height / 3);

g.FillRectangle(redBrush, x0, y0 + 2 * 1 * height / 3, width, height / 3);
အဝါေရာင္၊ အစိမ္းေရာင္နဲ႕ အနီေရာင္ ေနာက္ခံေလးေတြကို အရင္ဆြဲလိုက္တာပါ။ FillRectangle ကို သံုးတဲ့အခါ Brush (တစ္နည္းအားျဖင့္ Color) X position Y position Width နဲ႕ Height ကို ထည့္ေပးဖို႕လိုပါတယ္။ X position က အၿမဲတမ္း (ဒီ Project ထဲမွာ) 20 က စထားတာမို႕ ဘာမွ ေျပာစရာမရွိပါဘူး။ Y Position မွာေတာ့ မိမိလိုခ်င္တဲ့ ပမာဏကို ေျပာင္းလဲေပးဖို႕လိုပါတယ္။
ပံု ၁



ပံု ၁မွာ ျပထားတဲ့အတိုင္း တကယ္လို႕ Height ကသာ 900 ျဖစ္ခဲ့မယ္ဆိုရင္ တစ္ခုကို 300 စီရွိရမွာျဖစ္ၿပီး X Position နဲ႕ Y Position က (0,0), (0,300), (0,600) ျဖစ္သြားပါမယ္။ (ဒီ Project ထဲမွာေတာ့ X Position နဲ႕ Y Position ကို ကၽြန္ေတာ္ ပံုေသနည္းထုတ္ၿပီး တြက္ျပထားတာပါ) Height ကိုေတာ့ ဝါစိမ္းနီ သံုးမ်ိဳးရွိတာမိုလို႕ သံုးနဲ႕စားထားပါတယ္။
ေနာက္တစ္ပိုင္းကေတာ့ ၾကယ္ကို ျဖည့္ဖို႕ ျဖစ္ပါတယ္။ ၾကယ္ပံုကို စဥ္းစားတဲ့အခါ သူ႕ရဲ႕ Width X Position နဲ႕ Y Position ကို သတ္မွတ္ေပးရပါတယ္။ r ဆိုတာကေတာ့ ၾကယ္ရဲ႕ Size ျဖစ္ၿပီး၊ xc နဲ႕ yc ကေတာ့ Position သတ္မွတ္ေပးတာျဖစ္ပါတယ္။ ၾကယ္ပံုဆြဲတယ္ဆိုတာ တကယ္ေတာ့ Point ေလးေတြ လိုက္ၿပီး သတ္မွတ္ေပးတာျဖစ္ပါတယ္။

ပံု ၂

ကၽြန္ေတာ္တို႕ ၾကယ္ကို ေလ့လာၾကည့္တဲ့အခါ ပံုမွာ ျပထားတဲ့အတိုင္း Point 10 ခု ရပါတယ္။ ဒါေၾကာင့္ Point 10 ခု ကို ေအာက္ပါအတိုင္း ျဖည့္ေပးပါတယ္။
PointF[] pts = new PointF[10];
pts[0] = new PointF(xc, yc - r);
pts[1] = new PointF(xc + r1 * sin36, yc - r1 * cos36);
pts[2] = new PointF(xc + r * sin72, yc - r * cos72);
pts[3] = new PointF(xc + r1 * sin72, yc + r1 * cos72);
pts[4] = new PointF(xc + r * sin36, yc + r * cos36);
pts[5] = new PointF(xc, yc + r1);
pts[6] = new PointF(xc - r * sin36, yc + r * cos36);
pts[7] = new PointF(xc - r1 * sin72, yc + r1 * cos72);
pts[8] = new PointF(xc - r * sin72, yc - r * cos72);
pts[9] = new PointF(xc - r1 * sin36, yc - r1 * cos36);
Point ေတြ သတ္မွတ္ၿပီးရင္ေတာ့ ၾကယ္က အျဖဴေရာင္ ျဖစ္တာမိုလို႕ Points ေတြကို အေျခခံၿပီး အျဖဴေရာင္ေလး ျဖည့္ေပးလိုက္ပါတယ္။
g.FillPolygon(Brushes.White, pts);
ဒီထဲမွာ ခက္ခဲတဲ့အပိုင္းက ၾကယ္ပံုကို ေရးဆြဲတာျဖစ္ပါတယ္။ Calculation ပိုင္းျဖစ္ေနတာမို႕ ကိုယ္တိုင္ ၾကယ္အႀကီးအေသးကို တြက္ခ်က္ၿပီး ေျပာင္းၾကည့္ၾကေပါ့ဗ်ာ။ အဓိကက Code ေတြရဲ႕ အလုပ္လုပ္တဲ့ ပံုစံကို နားလည္ဖို႕ပဲ မဟုတ္လား။ ကိုယ္တကယ္နားလည္၊ မလည္ဆိုတာ သိႏိုင္ဖို႕အတြက္ေတာ့ တျခားႏိုင္ငံေတြရဲ႕ Flag ေတြထပ္ၿပီး ေရးဆြဲၾကည့္ေပါ့ဗ်ာ။
Project ကိုေတာ့ ေအာက္က Link မွာ ေဒါင္းေလာ့ဆြဲလို႕ရပါတယ္။

0 comments:

Post a Comment