程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# GDI+技術

C# GDI+技術

編輯:C#入門知識

C# GDI+技術


C# GDI+技術

GDI+概述

GDI+是GDI(即Windows早期版本中附帶的Graphics Device Interface)的後繼者。它是一種構成Windows XP操作系統的子系統的應用程序編程接口(API)。 GDI+基類的主要命名空間及說明: System.Drawing--包含與基本繪圖功能相關的大多數類、結構、枚舉和委托。System.Drawing.Drawing2D--為大多數高級2D和矢量繪圖操作提供了支持,包括消除鋸齒、幾何轉換和圖形路徑。System.Drawing.Imaging--幫助處理圖像(位圖和GIF文件等)的各種類。System.Drawing.Printing--把打印機或打印預覽窗口作為輸出設備時使用的類。System.Drawing.Design--一些預定義的對話框、屬性表和其他用戶界面元素,與在設計期間擴展用戶界面相關。System.Drawing.Text--對字體和字體系列執行更高級操作的類。

基本圖形繪制

Graphics類是GDI+的核心,Graphics對象表示GDI+繪圖表面,提供了對象繪制到顯示設備的方法。Graphics類封裝了繪制直線、曲線、圖形、圖像和文本的方法,是GDI+實現繪制直線、曲線、圖形、圖像和文本的類,是進行一切GDI+操作的基礎類。

繪制直線

Graphics類中的DrawLine方法,可重載,主要用來繪制一條連接由坐標對指定的兩個點的線條。 (1)繪制一條連接兩個Point結構的線。
public void DrawLine(Pen pen, Point pt1,Point pt2)
pen:Pen對象,確定線條顏色、寬度和樣式。pt1:Point結構,表示要連接的第一個點。pt2:Point結構,表示要連接的第二個點。 (2)繪制一條連接由坐標對指定的兩個點的線條。
Public void DrawLine(Pen pen,int x1,int y1,int x2,int y2)
繪制直線的示例代碼:
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics graphics = this.CreateGraphics();
            Pen myPen = new Pen(Color.Blue, 2);
            graphics.DrawLine(myPen, 50, 30, 170, 30);
        }

繪制矩形

Graphics類的DrawRectangle方法,可重載。 (1)繪制由Rectangle結構指定的矩形。
public void DrawRectangle(Pen pen,Rectangle rect)
pen:Pen對象,確定線條顏色、寬度和樣式。rect:表示要繪制矩形的Rectangle結構。 例如:
Rectangle rect = new Rectangle(0, 0, 80, 50);
(2)繪制由坐標對、寬度和高度指定的矩形。
public void DrawRectangle(Pen pen, int x, int y, int width, int height)
pen:Pen對象,確定線條顏色、寬度和樣式。x:要繪制矩形的左上角x坐標。y:要繪制矩形的左上角y坐標。width和height分別表示寬度和高度。 繪制矩形的示例代碼:
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics graphics = this.CreateGraphics();
            Pen myPen = new Pen(Color.Blue, 2);
            graphics.DrawRectangle(myPen, 70, 20, 80, 50);
        }

繪制橢圓

Graphics類中的DrawEllipse方法,可重載。主要用來繪制邊界由Rectangle結構指定的橢圓。 (1)繪制邊界由Rectangle結構指定的橢圓。
public void DrawEllipse(Pen pen, Rectangle rect)
(2)繪制一個由邊框(該邊框由一對坐標、高度和寬度指定)定義的橢圓。
public void DrawEllipse(Pen pen, int x, int y, int width, int height)
繪制橢圓的示例代碼:
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics graphics = this.CreateGraphics();
            Pen myPen = new Pen(Color.Blue, 3);
            Rectangle myRectangle = new Rectangle(70, 20, 100, 60);
            graphics.DrawEllipse(myPen, myRectangle);
        }

繪制圓弧

Graphics類中的DrawArc方法,可重載。 (1)繪制一段弧線,它表示由Rectangle結構指定的橢圓的一部分。
public void DrawArc(Pen pen, Rectangle rect, float startAngle, float sweepAngle)
pen:Pen對象,確定線條顏色、寬度和樣式。rect:Rectangle結構,定義橢圓邊界。startAngle:從x軸到弧線的起始點沿順時針方向度量的角(以度為單位)。sweepAngle:從startAngle參數到弧線的結束點沿順時針方向度量的角(以度為單位)。 (2)繪制一段弧線,它表示由一對坐標、寬度和高度指定的橢圓部分。
public void DrawArc(Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle)
繪制圓弧的實例代碼:
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics graphics = this.CreateGraphics();
            Pen myPen = new Pen(Color.Blue, 5);
            Rectangle myRectangle = new Rectangle(70, 20, 100, 60);
            graphics.DrawArc(myPen, myRectangle,210,120);
        }

繪制多邊形

需要Graphics對象、Pen對象和Point(或PointF)對象數組。Graphics類提供DrawPolygon方法,Pen對象存儲用於呈現多邊形的線條屬性,如寬度和顏色等,Point(或PointF)對象數組存儲多邊形的各個頂點。可重載。 (1)繪制由一組Point結構定義的多邊形。
public void DrawPolygon(Pen pen, Point[] pints)
(2)繪制由一組PointF結構定義的多邊形。
public void DrawPolygon(Pen pen, PointF[] pints)
繪制多邊形示例代碼:
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics graphics = this.CreateGraphics();
            Pen myPen = new Pen(Color.Red, 5);
            Point point1 = new Point(80, 20);
            Point point2 = new Point(40, 50);
            Point point3 = new Point(80, 80);
            Point point4 = new Point(160, 80);
            Point point5 = new Point(200, 50);
            Point point6 = new Point(160, 20);
            Point[] myPoints = { point1, point2, point3, point4, point5, point6 };
            graphics.DrawPolygon(myPen, myPoints);
        }

繪制基數樣條

基數樣條是一連串單獨的曲線,連接起來組成較大的曲線。由點的數組和張力參數指定,樣條平滑地經過數組的每個點,曲線的陡度上沒有尖角和突然的變化。 (1)繪制經過一組指定Point結構的基數樣條。
public void DrawCurve(Pen pen, Point[] points)
(2)使用指定的張力,繪制經過一組指定Point結構的基數樣條。
public void DrawCurve(Pen pen, Point[] points, float tension)
tension:大於或等於0.0F的值,指定曲線的張力。 (3)從相對於數組開始位置的偏移量開始,繪制經過一組指定PointF結構的基數樣條。
public void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments)
offset:從points參數數組中的第一個元素到曲線中起始點的偏移量。numberOfSegments:起始點之後要包含在曲線中的段數。 (4)使用指定張力,繪制經過一組指定Point結構的基數樣條。
public void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments, float tension)
繪制基數樣條示例代碼:
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics graphics = this.CreateGraphics();
            Pen myPen = new Pen(Color.Red, 5);
            Point point1 = new Point(50, 20);
            Point point2 = new Point(60, 30);
            Point point3 = new Point(70, 25);
            Point point4 = new Point(100, 50);
            Point point5 = new Point(130, 30);
            Point point6 = new Point(150, 45);
            Point[] myPoints = { point1, point2, point3, point4, point5, point6 };
            graphics.DrawCurve(myPen, myPoints, 1.0F);
        }

繪制貝賽爾樣條

貝塞爾樣條是由4個點指定的曲線:兩個端點(p1,p2)和兩個控制點(c1,c2)。曲線開始於p1,結束於p2。曲線不經過控制點,但是控制點像磁鐵一樣,在某些方向上拉伸曲線並影響曲線彎曲的方式。 調用Graphics類的DrawBezier方法,可重載。 (1)繪制由4個Point結構定義的貝塞爾樣條。
public void DrawBezier(Pen pen, Point pt1, Point pt2, Point pt3, Point pt4)
4個Point點分別表示起始點、第一個控制點、第二個控制點和結束點。
(2)繪制由4個表示點的有序坐標對定義的貝塞爾樣條。
public void DrawBezier(Pen pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
x2,y2及x3,y3分別表示第1個、第2個控制點相應坐標。順序和第一種方法類似。
繪制貝塞爾樣條示例代碼:
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics graphics = this.CreateGraphics();
            Pen myPen = new Pen(Color.Red, 5);
            float startX = 50.0F;
            float startY = 80.0F;
            float controlX1 = 150.0F;
            float controlY1 = 20.0F;
            float controlX2 = 230.0F;
            float controlY2 = 50.0F;
            float endX = 190.0F;
            float endY = 80.0F;
            graphics.DrawBezier(myPen, startX, startY, controlX1, controlY1, controlX2, controlY2, endX, endY);
        }

繪制圖形路徑

路徑是通過組合直線、矩形和簡單的曲線而形成的。在GDI+中,GraphicsPath對象允許將基本構造塊收集到一個單元中,調用一次Graphics類的DrawPath方法,就可以繪制出整個單元的直線、矩形、多邊形和曲線。
public void DrawPath(Pen pen, GraphicsPath path)
pen:Pen對象,確定線條顏色、寬度和樣式。path:要繪制的GraphicsPath圖形路徑。 PS:注意要引用System.Drawing.Drawing2D命名空間。
繪制圖形路徑示例代碼:
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics graphics = this.CreateGraphics();
            GraphicsPath myGraphicsPath = new GraphicsPath();
            Pen myPen = new Pen(Color.Blue, 1);
            Point[] myPoints = { new Point(15, 30), new Point(30, 40), new Point(50, 30) };
            myGraphicsPath.AddArc(15, 20, 80, 50, 210, 120);
            myGraphicsPath.StartFigure();
            myGraphicsPath.AddCurve(myPoints);
            myGraphicsPath.AddString("圖形路徑", new FontFamily("華文行楷"), (int)FontStyle.Underline, 50, new PointF(20, 50), new StringFormat());
            myGraphicsPath.AddPie(180,20,80,50,210,120);
            graphics.DrawPath(myPen, myGraphicsPath);
        }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved