Graphics 使用筆記
前言
以下要感謝 112 學長留下來的筆記,極大提升了我整理資料的速度。
本篇只介紹筆者比較常用的功能,詳情還請自行參考官方文件。
介紹
這邊簡單介紹一下,Graphics
是一種封裝 GDI+
繪圖介面,主要用來在影像上畫出線條、圖形等,要使用 Graphics
之前必須先有圖形物件。
創建 Graphics 的方法
Graphics 主要可以透過 Paint
事件、繼承
Image
、呼叫控制項
creatGraphics()
,這幾種方法來實現,由於第一種比較不常用所以這裡只介紹後兩種。
Bitmap
透過 Bitmap
來創建
Graphics
,Bitmap
是一種封裝過後的 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。
繪圖物件
每個繪製的方法都需要一個繪圖物件,
Pen
- 用來繪製直線與曲線的物件,詳細可以參考 Microsoft 官方文件。Brush
- 用於填滿圖形形狀內部的物件,詳細可以參考 Microsoft 官方文件。
繪製方法
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 度