Pen.CompoundArray是一个数组,该数组包含四个元素,第一个元素是指Pen是最上侧开始的位置(相对Pen的宽度来讲),第二个元素是从上侧延伸到的位置,第三个元素是从上往下退缩的宽度,最后一个元素是从下往上退缩的宽度。

测试代码如下:

 

 
  
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9. using System.Drawing.Drawing2D;  
  10. namespace _003点_直线和曲线  
  11. {  
  12.     public partial class Form1 : Form  
  13.     {  
  14.         public Form1()  
  15.         {  
  16.             InitializeComponent();  
  17.         }  
  18.         protected override void OnPaint(PaintEventArgs e)  
  19.         {  
  20.             //base.OnPaint(e);  
  21.             Graphics G = e.Graphics;    // 构造Graphics对象  
  22.             Pen p1 = new Pen(Color.Blue,10);    // 实例化Pen对象  
  23.             G.DrawLine(p1,20,20,330,20);        // 画直线  
  24.  
  25.             Pen p2 = new Pen(Color.Blue,5);    // 实例化Pen对象  
  26.             float[] Pts = { 3,1,2,5};           // 定义一个浮点型数组  
  27.             p2.DashStyle = DashStyle.Dash;      // 定义Pen p2的DashStyle类型为DashStye  
  28.             p2.DashPattern = Pts;  
  29.             p2.DashCap = DashCap.Triangle;  
  30.             p2.StartCap = LineCap.Triangle;  
  31.             p2.EndCap = LineCap.ArrowAnchor;  
  32.             G.DrawLine(p2, 20, 50, 330, 50);  
  33.  
  34.             Pen p3 = new Pen(Color.Blue,100);  
  35.             Single[] lines = { 0.0f, 0.1f, 0.9f, 1.0f };  
  36.             p3 = new Pen(Color.Blue, 100);  
  37.             p3.CompoundArray = lines;  
  38.             e.Graphics.DrawLine(p3,20,180,330,180);  
  39.               
  40.         }  
  41.     }  
  42. }  

 

将数组lines改为:Single[] lines = { 0.0f, 0.3f, 0.9f, 1.0f };

 

 

可以明显看到上侧的宽度向中间延伸了。