实例说明
含有Graphics对象的控件都能够在其上进行绘图,很多软件就是通过Graphics对象来美化程序的主界面,因为窗体中含有Graphics对象,所以可以将窗体看作一个大画板,一个可以在上面绘图的特殊控件。本例设计了一个简单的绘图软件,该软件就利用了在窗体上绘图的方法,运行本软件可以在窗体上进行绘图。实例效果如图1.34所示。
技术要点
窗体中含有Graphics对象,使用该对象就能够完成大部分绘图功能,Graphics对象已经对Windows底层的一些绘图API进行了封装,使用起来比较方便。下面介绍Graphics对象的常用方法。
Graphics.DrawLine绘图方法用来绘制一条连接由坐标对指定的两个点的线条。其语法结构如下:
public void DrawLine (Pen pen,int x1,int y1,int x2,int y2)
参数说明如下。
l pen:Pen对象,确定线条的颜色、宽度和样式。
l x1:第一个点的x坐标。
l y1:第一个点的y坐标。
l x2:第二个点的x坐标。
l y2:第二个点的y坐标。
实现过程
(1)创建一个项目,将其命名为Ex01_34,默认窗体为Form1。
(2)向Form1窗口中添加GroupBox控件,用作RadioButton控件的容器;添加Button控件用来推出程序。
(3)主要程序代码。
在窗体单元的private中添加变量如下:
int startX,startY;
Graphics g;
单击鼠标事件。具体代码如下:
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
startX=e.X;
startY = e.Y;
}
鼠标在窗体中的移动事件。具体代码如下:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
g = this.CreateGraphics( );
Pen p = new Pen(Color.Black, 1);
if(radioButton2.Checked==true)
{
g.DrawRectangle(p, e.X, e.Y, 1, 1);
}
}
鼠标抬起事件。具体代码如下:
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
g = this.CreateGraphics( );
Pen p = new Pen(Color.Black, 2);
if (radioButton1.Checked == true )
{
g.DrawLine(p, startX, startY, e.X, e.Y);
}
}
举一反三
根据本实例,读者可以实现以下功能。
改变画笔的颜色。
在窗体上绘制矩型。