$cover

Graphics 使用筆記

前言

以下要感謝 112 學長留下來的筆記,極大提升了我整理資料的速度。
本篇只介紹筆者比較常用的功能,詳情還請自行參考官方文件。

介紹

這邊簡單介紹一下,Graphics 是一種封裝 GDI+ 繪圖介面,主要用來在影像上畫出線條、圖形等,要使用 Graphics 之前必須先有圖形物件。

創建 Graphics 的方法

Graphics 主要可以透過 Paint 事件、繼承 Image、呼叫控制項 creatGraphics(),這幾種方法來實現,由於第一種比較不常用所以這裡只介紹後兩種。

Bitmap

透過 Bitmap 來創建 GraphicsBitmap 是一種封裝過後的 GDI+ 點陣圖。

Bitmap bmp = new Bitmap(200, 200);
Graphics g = Graphics.FromImage(bmp);

PictureBox

繼承自 PictureBox.Image

PictureBox pb = new PictureBox();
Graphics g = Graphics.FromImage(pb.Image);

Panel

透過 panel 來創建 Graphics

Panel panel = new Panel();
Graphics g = panel.CreateGraphics();

繪圖

這邊就簡單提及一些常用的 methods。

繪圖物件

每個繪製的方法都需要一個繪圖物件,

繪製方法

DrawLine(Pen | Brush p, x1, y1, x2, y2) - 從 (x1, y1)(x2, y2) 繪製一條直線。

Graphics g = Graphics.FromImage(bitmap);
Pen blackPen = new Pen(Color.Black, 3); 
g.DrawLine(blackPen, 0, 0, 250, 250);

DrawRectangle(Pen | Brush p, x, y, width, height) - 以 (x, y) 為左上角座標繪製一個矩形。

g.DrawRectangle(bluePen, 50, 50, 150, 100);

DrawEllipse(Pen | Brush p, x, y, width, height) - 以 (x, y) 為左上角座標繪製一個橢圓形。

g.DrawEllipse(bluePen, 50, 50, 150, 100);

FillRectangle(Pen | Brush p, Reactangle x) - 填充一個矩形。

g.FillRectangle(Brushes.Red, new Rectangle(0, 0, 50, 50));

FillEllipse(Pen | Brush p, Reactangle x) - 填充一個橢圓形。

g.FillEllipse(Brushes.Red, new Rectangle(0, 0, 50, 50));

DrawString(str, Font font, Brush brush, x, y) - 在 (x, y) 畫出一段字

Font font = new Font("Arial", 16);
Brush brush = Brushes.Black;
g.DrawString("Hello, Graphics!", font, brush, 10, 10);

Clear(Color c) - 將整個繪圖區域清除並填充指定的背景色。

g.Clear(Color.White);

TranslateTransform(x, y) - 將繪圖的原點移動到指定位置。

g.TranslateTransform(30, 30);  
g.DrawRectangle(Pens.Blue, 0, 0, 70, 70);  // (30, 30) ~ (100, 100)

RotateTransform(angle) - 旋轉整個繪圖方向

g.RotateTransform(45);  // 旋轉 45 度