构造方法1:Pen(const Brush* brush, REAL width=1.0f)
注:关于第一种构造方法中的形参(const Brush* brush)做简单说明,Brush在Gdiplus中为抽象基类,Pen在该构造方式下只能通过Brush子类进行实例化,Brush子类在后续章节将做详细介绍。通过Brush一个子类构造Pen对象,该构造方法下代码效果如下:
Graphics graphics(dc); Gdiplus::Pen p(&HatchBrush(HatchStyle::HatchStyle05Percent,Color(255,0,0),Color(0,255,0)),50.0f); graphics.DrawLine(&p, 0, 100, 100, 100);
构造方法2:Pen(const Color& clr, REAL width=1.0f)
该构造方法下代码效果如下:
1 Graphics graphics(dc); 2 Gdiplus::Pen p(&HatchBrush(HatchStyle::HatchStyle05Percent,Color(255,0,0),Color(0,255,0)),50.0f); 3 graphics.DrawLine(&p, 0, 100, 100, 100); 4 5 Gdiplus::Pen p1(Color(255, 0, 0), 50.0f); 6 graphics.DrawLine(&p1, 0, 30, 100, 30);
画笔样式:
1、设置画帽
线的画帽在官方文档中的样式有如下几种:
typedef enum LineCap { LineCapFlat = 0, LineCapSquare = 1, LineCapRound = 2, LineCapTriangle = 3, LineCapNoAnchor = 0x10, LineCapSquareAnchor = 0x11, LineCapRoundAnchor = 0x12, LineCapDiamondAnchor = 0x13, LineCapArrowAnchor = 0x14, LineCapCustom = 0xff, LineCapAnchorMask = 0xf0 } ;
画帽代码效果举例如下所示:
Graphics graphics(dc); Gdiplus::Pen p1(Color(255, 0, 0), 50.0f); p1.SetStartCap(LineCapTriangle); p1.SetEndCap(LineCapRound); graphics.DrawLine(&p1, 30, 80, 130, 80);
2、虚线画笔
线的虚线样式在官方文档如下所示:
1 typedef enum DashStyle { 2 DashStyleSolid, 3 DashStyleDash, 4 DashStyleDot, 5 DashStyleDashDot, 6 DashStyleDashDotDot, 7 DashStyleCustom 8 } ;
系统效果与自定义效果代码如下所示:
1 Graphics graphics(dc); 2 //系统效果 3 Gdiplus::Pen p1(Color(255, 0, 0), 10.0f); 4 p1.SetDashStyle(Gdiplus::DashStyle::DashStyleDashDot); 5 graphics.DrawLine(&p1, 0, 50, 1000, 50); 6 //自定义效果 7 Gdiplus::Pen p(Color(0, 255, 0), 10.0f); 8 Gdiplus::REAL r[] = { 5.0,2.0,15.0,4.0 }; 9 p.SetDashPattern(r, 4); 10 graphics.DrawLine(&p, 0, 80, 1000, 80);