(三)画笔
尽管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),如果在窗体上做画,那么这个坐标原点就在标题条的左下角。
 图五、窗体坐标系 |
如何设定图形或形状的起点,要视形状而定。
查看本文来源