C# 常用类库 GDI+(学习笔记11)
GDI+ (graphics device interface plus) 图形设备接口,用于在屏幕显示或打印图形和文字。
1.基本概念
画图需要画板,画笔(勾勒轮廓),画刷(填充内部),以及技巧(控制画笔去勾勒)。
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
Graphics board;// 画板
Pen pen; // 画笔
SolidBrush brush;// 画刷
}
2.绘制直线

private void BtnDrowLine_Click(object sender, EventArgs e)
{
// 在窗体上创建画板
board = this.CreateGraphics();
// 创建画笔
p = new Pen(Color.Blue, 2);
// 创建画刷
brush = new SolidBrush(Color.Red);
// 设置画刷
p.Brush = brush;
// 画线段
board.DrawLine(p, 20, 20, 150, 150);
// 释放资源
p.Dispose();
board.Dispose();
}
3.在Pannel上绘制直线

private void BtnDrowLine_Click(object sender, EventArgs e)
{
// 在pannel上创建画板
board = panel1.CreateGraphics();
// 创建画笔
p = new Pen(Color.Blue, 2);
// 创建画刷
brush = new SolidBrush(Color.Red);
// 设置画刷
p.Brush = brush;
// 画线段
board.DrawLine(p, 20, 20, 150, 150);
// 释放资源
p.Dispose();
board.Dispose();
}
4.绘制矩形

private void btnDrawRect_Click(object sender, EventArgs e)
{
// 在pannel上创建画板
board = panel1.CreateGraphics();
// 创建画笔
p = new Pen(Color.Blue, 2);
// 创建画刷
brush = new SolidBrush(Color.Red);
// 设置画刷
p.Brush = brush;
// 画矩形
Rectangle rectangle = new Rectangle();
rectangle.X = 30;
rectangle.Y = 30;
rectangle.Width = 100;
rectangle.Height = 60;
board.DrawRectangle(p, rectangle);
// 释放资源
p.Dispose();
board.Dispose();
}
5.填充图形

private void BtnFillRect_Click(object sender, EventArgs e)
{
// 矩形1
Rectangle rectangle1 = new Rectangle(50, 50, 200, 100);
// 矩形2
Rectangle rectangle2 = new Rectangle(70, 20, 100, 200);
// 创建两个矩形
board = panel1.CreateGraphics();// 画板
board.DrawRectangle(Pens.Black, rectangle1);
board.DrawRectangle(Pens.Red, rectangle2);
// 矩形1和矩形2是否有交集
if (rectangle1.IntersectsWith(rectangle2))
{
// 与矩形2的交集部分赋值给矩形1
rectangle1.Intersect(rectangle2);
// 新的矩形1的各种属性均不能为0(x,y,width,height)
if (!rectangle1.IsEmpty)
{
// 用绿色画笔填充矩形1
board.FillRectangle(Brushes.Green, rectangle1);
}
}
}
6.圆

private void BtnDrawEllipse_Click(object sender, EventArgs e)
{
board = panel1.CreateGraphics();
p = new Pen(Color.Blue, 1);
RectangleF rect = new RectangleF()
{
X = 100,// 左上角横坐标
Y = 100,// 左上角纵坐标
Width = 100,// 宽度
Height = 100 // 高度
};
board.DrawEllipse(p, rect);
}
7.文本

private void BtnDrawText_Click(object sender, EventArgs e)
{
board = panel1.CreateGraphics();
string s = "我爱你,中国!";
PointF point = new PointF
{
X = 60,
Y = 100
};
board.DrawString(s, font, Brushes.Red, point);
}
本文来自博客园,作者:huiy_小溪,转载请注明原文链接:https://www.cnblogs.com/huiy/p/19256125

浙公网安备 33010602011771号