GDI+ 绘制曲线方法总结

40 篇文章 7 订阅
15 篇文章 4 订阅

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);
}

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值