GDI+学习系列:
Qt中使用GDI+绘图
GDI+中的基础类总结
GDI+中基本图形绘制
背景
GDI+ 支持多种类型的曲线:椭圆、弧形、基数样条和贝塞尔样条。基数样条由一系列点和张力参数定义,即曲线平滑地通过系列中的每个点,张力参数影响曲线的弯曲方式;贝塞尔样条由两个端点和两个控制点定义,即该曲线不通过控制点,但是控制点影响曲线从一个端点到另一个端点时的方向和弯曲程度。
基数样条曲线
①.概述
基数样条是一组单个曲线按照一定的顺序连接而成的一条较大曲线。样条由一个点数组和一个张力参数描述。使用 DrawCurve 方法绘制基数样条曲线,默认张力参数是0.5。
②.绘制基数样条曲线
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
Point points[] = { Point(0, 100),Point(50, 80),Point(100, 20),Point(150, 80),Point(200, 100) };
graphics.DrawCurve(&m_pen, points, 5);
}
③.绘制闭合基数样条曲线
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
Point points[] = { Point(10, 30),Point(50, 80),Point(100, 20),Point(150, 80),Point(150, 80) };
graphics.DrawClosedCurve(&m_pen, points, 5);
}
④.填充封闭曲线
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
SolidBrush m_brush(Color::Red);//构造 Brush 对象
Point points[] = { Point(10, 30),Point(50, 80),Point(100, 20),Point(150, 80),Point(150, 50) };
graphics.DrawClosedCurve(&m_pen, points, 5);
graphics.FillClosedCurve(&m_brush, points, 5);
}
贝塞尔曲线
①.概述
用四个点定义一条贝塞尔样条:一个起点、两个控制点和一个终点,曲线并不经过控制点,但是控制曲线往某个方向拉从而影响了曲线的走向。
②.绘制贝塞尔曲线
void DemoGDI::DrawUser(HDC hdc)
{
Graphics graphics(hdc);//构造 Graphics 对象
Pen m_pen(Color::Blue, 2.0f);//构造 Pen 对象
graphics.DrawBezier(&m_pen, 10, 100, 100, 10, 150, 150, 200, 100);
}