跳轉到內容

Visual Basic .NET/GDI+

來自 Wikibooks,開放世界中的開放書籍

圖形物件

[編輯 | 編輯原始碼]

System.Drawing.Graphics 物件表示一個繪圖表面。

要獲取 PictureBox 控制元件的 Graphics 物件,請在 PictureBox 的 Paint() 事件中使用 PaintEventArgs 引數的 .Graphics 屬性。

    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Using g as Graphics = e.Graphics
            'use the methods of g to draw 
        End Using
    End Sub

要載入影像,然後在上面繪圖,請使用 Graphics.FromImage()。

    Using MyImage As Bitmap = Bitmap.FromFile("C:\Temp\MyImage.BMP")
        Using g as Graphics = Graphics.FromImage(MyImage)
            'use the methods of g to draw 
        End Using
    End Using

.Save() 方法可以用來將 Bitmap 儲存到檔案或流中。注意:從檔案建立的 Bitmap 物件會保持檔案開啟,並在物件使用時與檔案連結。如果不想讓 Bitmap 物件與檔案連結,則需要先將檔案複製到 MemoryStream 中。

繪圖方法

[編輯 | 編輯原始碼]

使用 Graphics.DrawLine 和 Graphics.DrawString 等方法繪製線條和文字。

Graphics.MeasureString 可以用來測量一段文字使用 .DrawString 輸出時的高度或寬度。

簡單縮放

[編輯 | 編輯原始碼]

使用 Graphics.PageUnit 屬性作為更改座標系的一種簡單方法。更復雜的變換和縮放將在下面描述。

世界、頁面和裝置座標系

[編輯 | 編輯原始碼]

當您向 VB.NET 圖形函式提供座標時,這些座標屬於世界座標系。世界座標系的單位由您定義,但預設情況下為畫素。

世界變換將您的世界座標轉換為頁面座標。頁面座標可以使用不同的單位,但與裝置無關。其想法是,用頁面座標表示的距離在監視器上檢視或列印到頁面上時應該是一樣的。

頁面變換將頁面座標轉換為裝置座標。換句話說,頁面變換確保無論將影像傳送到哪個裝置,圖形輸出都看起來一樣。裝置座標通常為畫素。

您可以指定一個平移矩陣,將您指定的點轉換為最終輸出。這種變換可以平移(偏移)、縮放、旋轉或傾斜最終輸出。這種變換稱為仿射變換

從緹(Twips)轉換

[編輯 | 編輯原始碼]

以前版本的 Visual Basic 使用緹作為度量單位。1,440 緹 = 1 英寸。但是,VB.NET 使用畫素作為其度量單位。從緹轉換為畫素需要一個 Graphics 物件(因為您不知道每英寸點數)。因此,如果 XTwips 是以緹為單位的測量值,那麼 XPixels,以畫素為單位的測量值,按如下方式計算(g 是相應的 Graphics 物件)。

    XPixels = XTwips * g.DpiX / 1440

使用 g.DpiY 計算 Y 軸的座標。

華夏公益教科書