给自己流失的岁月作个记号!
在C#中的绘图,自己感觉还是比较人性化的,下面就一点一点说一下C#中的绘图
1> 首先,要邀请一名画家来画画,暂且就叫小g为齐白石吧
Graphics g;
2> 第二步要告诉齐白石在哪里画,在C#中画的地方很多,可以在Form窗口中画,Panel面板中画,PictureBox图片框中画,Image中画;
a) 如果在Form窗口中画,那就告诉齐白石吧,则g=Form.CreateGraphics(画笔是由窗体创造的,专属画笔,不在Form中画在哪里画);
b) 如果在Panel面板中画,则把Panel控件拖到Form中,然后告诉齐白石,则 g=Panel.CreateGraphics(同样的专属画笔).
c) 如果画笔在Image中画,由于没有Image控件拖到Form中,首先要生成一张Image (Image img = new Bitmap (Width, Height)),然后告诉齐白石g=Graphics.FromImage(img),记得最后返回Image(return img),(其他两个是在比赛场地直接画画,所以画完之后自动就被收走了,而你是在家画画,画完之后当然要自己上交了.)
3> 然后就是画画喽(最后再讲):
4> 画完之后要交成果了,如果在Form中和托放在Form中的Panel上画,则运行之后可以直接看到齐白石的作品,如果是画在了Image中,则必须找个东西装起来再展示(这样可以挂墙上啊,相框装相片,图片框当然就是装图片啦.),我们在这里让图片框PictureBox去装图片Image.(PictureBox不装Image,它装什么啊,^_^) PictureBox.Image=img(上交上来的画);但是也不要忘记把PictureBox提前托放在Form窗体上(提前挂在墙上,留一个夹Image的夹子就行了,这样就可以展示多人的不同时间的作品.经常去取下,重新挂容易毁坏墙壁,^_^),这样一运行(对外开放),齐白石在Image上画的作品就展示出来了.
5> 画画的步骤就这样结束了,但是也许有朋友会问,齐白石能画那些图形啊?怎么画啊?问的好,现在就来讲讲他能画什么?
a) 首先画画必不可少的工具是画笔Pen和画刷Brush(染色用);
i. Pen pen = new Pen(Color.Black, 3)
ii. Brush brush = new SolidBrush(Color.Red) //典型的虚函数,画刷有孩子提供.
b) 能画什么?看看吧
i. DrawLine(直線)
ii. DrawRectangle(矩形)
iii. DrawEllipse(橢圓)
iv. DrawCurve(曲線)
v. DarwArc(弧線)
vi. DrawPie(扇形)
vii. DrawLines(多邊形)
viii. DrawPolygon(封閉多邊形)
ix. DrawBezier(貝茲曲線)
x. 太多了,就列到这里吧!
c) 怎么画,看看csdn吧!而且VS在写代码的时候会提示你的.
6> 除了可利用上述CreateGraphics 方法取得繪圖物件來繪製圖形外, 亦可利用物件的Paint 事件來繪製圖形,也可以override, Paint 事件的語法如下:
private void 物件名稱_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
Paint 事件來自Control 類別, 所以Control 類別的衍生類別皆可改寫此事件, 我們可利用上述語法中PaintEventArgs 類別的物件e 來取得繪圖物件繪製圖形。例如, 以下敘述可利用Paint 事件中的參數e 繪製一條直線。
Pen drawPen = new Pen(Color.Black, 3);
e.Graphics.DrawLine(drawPen, 10, 10, 300, 100);
n 其次, Paint 事件的執行時機如下:
n 1. 新建的視窗。
n 2. 視窗從隱藏還原為可視。
n 3. 視窗被改變大小。
n 4. 視窗被別的視窗遮蓋再移開。