C#畫圖

來源:互聯網
上載者:User

在.NET下面畫圖需要用到System.Drawing命名空間,這個命名空間基本上是對GDI+(Graphic Devices Inteface plus)的封裝。我們來看看怎麼使用.NET畫圖。

 

1,先建立一個畫布(Graphics)

GDI+是對顯示器/印表機的圖形輸出裝置的封裝,通過GDI+我可以使用抽象語言輸出圖形,而不考慮硬體的驅動等細節。要畫圖先要有畫布(其實是個輸出裝置),在.NET中我們用Graphics來表示這個畫布。MSDN對Graphics類的解釋是:Encapsulates a GDI+ drawing surface.

我們一般有兩種方法建立畫布(Graphics):

1,使用Graphics的靜態方法,從Image,視窗來建立Graphics。

//create graphics over windowvar frmGraphics = new frmGraphics();Graphics g = Graphics.FromHwnd(frmGraphics.Handle);//create graphics over imagevar img = Image.FromFile(@"C:\Users\a.png");Graphics g2 = Graphics.FromImage(img);

 

2,使用.NET控制項的CreateGraphics方法

Graphics g = pictureBox1.CreateGraphics();

 

2,畫出圖形

我們可以用兩種方式表示一個圖形,用筆(Pen)勾畫出形狀。我們還可以用刷子(Brush)填充出這個形狀,由些繪畫API有分為兩類,一類是勾畫,這類API特點是都以Draw開頭:

g.DrawArc(redPen, rect, 125, 40);                 //弧g.DrawBezier(redPen, p1, p2, p3, p5);             //Bezier曲線g.DrawClosedCurve(redPen, points);                //閉合曲線g.DrawCurve(redPen, points);                      //曲線g.DrawEllipse(redPen, rect);                      //橢圓,當長寬比為1:1時即為圓g.DrawLine(redPen, p1, p4);                       //線段g.DrawLines(redPen, points);                      //點連成的線段g.DrawPath(redPen, new GraphicsPath());           //由直線和曲線連成的路徑g.DrawPie(redPen, rect, 90, 45);                  //餅狀圖g.DrawPolygon(redPen, points);                    //多邊形g.DrawRectangle(redPen, rect);                    //方形g.DrawString("Cicle", new Font("Arial", 15), brush, p4);

 

填充的API都是以Fill開頭,基本用法跟上面類似,唯中的區別就是以Brush來代替Pen

g.FillClosedCurve(brush, points);g.FillEllipse(brush, rect);g.FillRegion(brush, new Region(rect));g.FillPie(brush, rect, 90, 100);

 

3,處理映像

Graphics有兩類方法用來處理映像:

g.DrawIcon(icon, rect);g.DrawImage(image, p1);g.DrawImageUnscaledAndClipped(image, p2);

DrawIcon, DrawImage將表徵圖或映像顯示在輸出裝置(Graphics)上。

 

4,截屏

Graphics類還提供了一個的方法CopyFromScreen,我們可以利用這個方法來截取螢幕:

g.CopyFromScreen(new Point(0, 0), new Point(100, 100), sz);

 

5,其它

1,消除鋸齒

g.SmoothingMode = SmoothingMode.AntiAlias;

 

2,畫布的大小

g.VisibleClipBounds.Width;g.VisibleClipBounds.Height;

 

2,畫布的變換(Transform)

var img = Image.FromFile(@"C:\Users\message.png");g.RotateTransform(45);g.ScaleTransform(0.5F, 0.5F);g.DrawImage(img, p1);
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.