(三)画笔
  尽管Graphics类提供了用以绘画的平台,但是还需要绘画的工具。可以使用的最基本的工具就是画笔。GDI+库通过Pen类提供了一个画笔。为了得到一个画笔,可以声明一个指向Pen类的指针,画笔必须说明的一个最基本的信息是它的颜色,可能要使用下面的构造函数来说明画笔的颜色:
| public: Pen(Color color); | 
  下面是一个例子代码:
| private: System::Void button1_Click(System::Object * sender, System::EventArgs * e) {
 Color clrBlue = Color::Blue;
 Pen *penRed = new Pen(clrBlue);
 }
 | 
  如果已经创建了一个画笔,为了更改颜色,可以分配一个所需要的颜色名或值给Pen::Color 属性。
  Pen提供的细节远远不止这些,现在我们只是简单地使用它。
  (四)图形对象
  绝大多数的绘画都是在一个图形对象上进行。多数情况下,当需要使用图形对象时它并不一定可用,你必须在所要绘画的对象上对它提出申请或创建它。这两种操作都很容易。
  1、得到一个图形对象
  在GDI+中,图形对象基于Graphics类,所以,在绘画以前,需要获取一个图形对象。幸运的是,每一个窗体控件,也就是每一个基于Control的类自动继承了一个称为CreateGraphics()的方法,它提供了操作控件图形部分的途径。Control::CreateGraphics()方法的语法是:
| public: Graphics *CreateGraphics(); | 
  正如所看到的,CreateGraphics()方法返回调用变量的图形对象。下面的例子获取窗体的图形变量。
| private: System::Void button1_Click(System::Object * sender, System::EventArgs * e) {
 Graphics *graph = this->CreateGraphics();
 }
 | 
  获取控件图形对象的另外一种技术是调用静态方法Control::FromHwnd(),它的语法是:
| public: static Graphics *FromHwnd(IntPtr hwnd); | 
  注意,这个方法是静态的,传递给它的参数必须是你想要获取的图形对象所属控件。所有窗体控件都有一个句柄叫Handle,下面的例子说明如何使用句柄获取窗体的图形对象: 
| private: System::Void button1_Click(System::Object * sender, System::EventArgs * e) {
 Graphics *graph = Graphics::FromHwnd(this->Handle);
 }
 | 
  如果你正在使用窗体的Paint事件,它通过PaintEventArgs提供了一个非常方便使用的图形对象,可以按照下面的代码方式访问图形对象:
| private: System::Void Form1_Paint(System::Object * sender, System::Windows::Forms::PaintEventArgs * e)
 {
 e->Graphics . . .
 }
 | 
  四、绘画步骤  (一)获取设备上下文
  正如上面提到的,在绘画之前,确认已经有了一个图形对象。为了进行实际绘画,图形对象提供了适合于各种图形的方法,用来画某种图形的方法都有一个带有"Draw"开头的名字。此外,用于画每个已知图形的方法都需要一个Pen参数。所以,当绘画时,你第一个要做的决定就是想要画什么样的图形或图形类型,第二个决定可能就是定义边界的颜色。绘画时另外两个重要问题是:位置和尺寸。
  (二)图形或形状的起点
  为了跟踪绘画时的踪迹,在其上面绘画的对象都使用了坐标系,它的左上角是起点坐标点(0,0),如果在窗体上做画,那么这个坐标原点就在标题条的左下角。
|  图五、窗体坐标系 | 
  如何设定图形或形状的起点,要视形状而定。
查看本文来源