GDI+ 中基本图形绘制

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

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);//填充颜色
}

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值