GDI+学习系列:
Qt中使用GDI+绘图
GDI+中的基础类总结
背景
图形类 Graphics 是 GDI+的核心,它提供绘制图形、图像和文本的各种方法。
画直线
①.概述
GDI+ 中使用 DrawLine 方法绘制直线,绘制直线至少需要 2 个点,可以是整数点也可以是浮点数点。
②.画直线
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
graphics.DrawLine(&m_pen, 50, 50, 180, 180);//画直线
}
③.画折线
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
Point points[4];//点数组
points[0] = Point(10, 10);
points[1] = Point(80, 20);
points[2] = Point(30, 45);
points[3] = Point(40, 100);
graphics.DrawLines(&m_pen, points,4);//画折线
}
画矩形
①.概述
GDI+ 中使用 DrawRectangle 方法来绘制矩形,同样也包含整数版本和浮点数版本。
②.画矩形
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
graphics.DrawRectangle(&m_pen, 20, 20, 100, 100);
}
③.画多个矩形
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
Rect rects[3];
rects[0] = Rect(10,10, 30, 50);
rects[1] = Rect(50, 50, 60, 50);
rects[2] = Rect(80, 80, 70, 50);
graphics.DrawRectangles(&m_pen, rects, 3);
}
画圆
①.概述
GDI+ 中使用 DrawEllipse 方法来绘制圆形,同样也包含整数版本和浮点数版本。一个圆由它的外接矩形来描述。
②.画圆
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
graphics.DrawEllipse(&m_pen, 20, 20, 100, 120);
}
画圆弧
①.概述
GDI+ 中使用 DrawArc 方法来绘制弧线,同样也包含整数版本和浮点数版本。一个圆弧由它的外接矩形来描述,还需要提供起始角和扫描角,顺时针旋转,单位是度。
②.画圆弧
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
graphics.DrawArc(&m_pen, 20, 20, 100, 120,30,180);
}
画扇形
①.概述
GDI+ 中使用 DrawPie 方法来绘制扇形,同样也包含整数版本和浮点数版本。一个扇形由它的外接矩形来描述,以及起始角和扫描角。
②.画扇形
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
graphics.DrawPie(&m_pen, 20, 20, 100, 100,20,100);
}
画多边形
①.概述
多边形是由 3 个或 3 个以上的直边所组成的闭合图形。GDI+ 中使用 DrawPolygon方法来绘制多边形。
②.画多边形
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
Point myPointArray[] = { Point(20, 20), Point(80, 45), Point(50, 90) };
graphics.DrawPolygon(&m_pen, myPointArray,3);
}
形状填充
①.概述
每个形状都有其填充版本,把方法 DrawXXX 改为 FillXXX 即可。
②.形状填充
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
SolidBrush m_brush(Color::Red);//构造 Brush 对象
Point myPointArray[] = { Point(20, 20), Point(80, 45), Point(50, 90) };
graphics.DrawPolygon(&m_pen, myPointArray,3);//绘制边框
graphics.FillPolygon(&m_brush, myPointArray, 3);//填充颜色
}