编写一个程序,接收用户输入的2组数据,每组数据有两个数据,分别是一个点的x坐标和y坐标,在窗口中画出以这两点为起点终点的直线,然后计算两个点之间的距离,输出在屏幕中
主要代码段分析
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace drawline
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
string j;
int aa, bb, cc, dd;
j = a.Text;
aa = Convert.ToInt32(j);
j = b.Text;
bb = Convert.ToInt32(j);
j = c.Text;
cc = Convert.ToInt32(j);
j = d.Text;
dd = Convert.ToInt32(j);
Point[] pointArray = { new Point(aa, bb), new Point(cc, dd) };//定义直线起点和终点
Graphics g = this.CreateGraphics();
Pen redpen = new Pen(Color.Red,5);//新建画笔 宽度为5
g.DrawLines(redpen, pointArray);//画直线
double length = Math.Sqrt((cc - aa) * (cc - aa) + (dd - aa) * (dd - aa));
//计算直线长度
textBox1.Text =Convert.ToString ( length);//将直线长度显示在文本框textbox1里
MessageBox.Show("你所画的直线长度是:" + length);//显示直线长度的消息框
}
catch(System .Exception x)
{
MessageBox .Show ("请输入数值!\n");//提示输入的消息框
}
}
private void button2_Click(object sender, EventArgs e)
{
a.Text = "";//清空各文本框
b.Text = "";
c.Text = "";
d.Text = "";
textBox1.Text = "";
Graphics g = this.CreateGraphics();
g.Clear (Color.White );//清除整个背景面,并以指定颜色(白色)填充
}
}
}
四、运行结果及分析
1.运行结果
2.结果分析和说明
① 程序初始化界面如图一所示.
② 若没有输入数值直接按确定则提示:请输入数值.如图二所示.
③ 输入直线起点终点坐标后,画出直线,并计算出直线长度,分别显示在textbox和messagebox中,如图三所示.
④ 按清楚输入后.屏幕初始化如图一所示.
五、实验小结
1.使用Convert.ToInt32方法之前,被转换的数要先赋初值,否则会提示出错
2.刚开始,画新的直线的时候没有清除旧的直线,最后多条直线在一个背景面中显示.后来使用Clear方法 清除整个背景面,并以指定颜色填充,即每次点清除输入后,不仅清除文本框内容,还对背景面进行清除.
六、 参考文献和相关资料
C#程序设计大学教程
请发表评论