GDI+中的线型,大多数与GDI中的相同,区别主要有两点:

1>GDI中的非实线线型,对宽度>1的笔无效;而GDI+的笔对任意非零宽度的笔都是有效的;

2>GDI+中新增了一种风格——自定义虚线风格。

具体的自定义虚线风格,由Pen类的设置虚线图案的成员函数

Status SetDashPattern(const REAL *dashArray, INT count);

来设置,其中的实数数组dashArray含若干个正实数(单位为像素),按线、空、线、空、……的交叉方式排列;参数count为数组中实数的个数(须>0)。

例如:

       Graphics graph(pDC->m_hDC);

       Pen pen(Color::Black, 8); // 创建宽8个像素的黑色笔(画虚线用)

       REAL dashVals[4] = {5.0f, 2.0f, 15.0f, 4.0f}; // 线5、空2、线15、空4(像素)

       FontFamily fontFamily(L"Times New Roman"); // 创建字体族对象

       Font font(&fontFamily, 10.5); // 创建5号字大小的Times New Roman字体

       SolidBrush brush(Color(0, 128, 0)); // 创建绿色的实心刷(写字符串用)

       // 笔的虚线风格枚举常量的名称字符串数组

       CString strs[] = {L"DashStyleSolid", L"DashStyleDash", L"DashStyleDot",

              L"DashStyleDashDot", L"DashStyleDashDotDot", L"DashStyleCustom"};

       for (int i = 0; i <= 5; i++)
       { // 绘制各种风格的虚线及其名称串

              pen.SetDashStyle((DashStyle)i); // 设置笔的虚线风格

              if (i == 5)

              {

                    pen.SetDashPattern(dashVals, 4); // 设置自定义虚线图案

              }

              graph.DrawLine(&pen, 10, 10 + i * 20, 400, 10 + i * 20); // 画虚线

              // 绘制虚线风格枚举常量名称字符串

              graph.DrawString(strs[i], -1, &font, PointF(410, 2 + i * 20), &brush);

       }