博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 动态绘制直线和曲线
阅读量:4449 次
发布时间:2019-06-07

本文共 2029 字,大约阅读时间需要 6 分钟。

在本案例中利用Graphics对象动态地绘制直线和曲线。程序运行后,选择“直线”单选按钮,然后按下鼠标左键拖动鼠标就可以绘制直线,选择“曲线”单选按钮,然后移动鼠标就可以绘制曲线。

制作要点:

1.Graphics对象的应用。

2.窗体的MouseUp事件和MouseDown事件的应用。

3.窗体的MouseMove事件的应用。

4.Graphics对象的DrawLine()方法的应用。

  该方法可以绘制一条线条,其语法结构如下:

       public void DrawLine(System.Drawing.Pen pen,float x1,float y1,float x2,float y2)

  各参数意义如下:

  1).pen:System.Drawing.Pen,他确定线条的颜色、宽度和样式。

  2).x1:第一个点的x坐标。

  3).y1:第一个点的y坐标。

  4).x2:第二个点的x坐标。

  5).y2:第二个点的y坐标。

5.Graphics对象的DrawRectangle()方法的应用。

该方法可以绘制由坐标对、宽度和高度指定的矩形,其语法结构如下:

   public void DrawRectangle(System.Drawing.Pen pen,float x,float y,float width,float height)

各参数意义如下:

1)pen: System.Drawing.Pen,它确定矩形的颜色、宽度和样式。

2)x:要绘制的矩形的左上角的x坐标。

3)y:要绘制的矩形的左上角的y坐标。

4)width:要绘制的矩形的宽度。

5)height:要绘制的矩形的高度。

制作步骤:

1.新建一个Windows窗体应用程序,设置"Text"属性为“动态绘制直线和曲线”。

2.添加一个GroupBox控件。设置'Text"属性为“请选择绘图类型”。

3.添加2个RadioButton控件,设置"Text"属性分别为“直线”和“曲线”。

4.添加2个按钮。设置其"Text"属性为“清空”和“退出”。

添加代码:

1.双击窗体。定义公共变量。

        int startX;     //获取鼠标起始点的X坐标

        int startY;    //获取鼠标起始点的Y坐标
        Graphics g;  //定义Graphics对象实例

2.双击窗体,添加:

private void Form1_Load(object sender, EventArgs e)

        {
            this.StartPosition = FormStartPosition.CenterScreen;
            this.BackColor = Color.Snow;         //设置窗体背景颜色
        }

3.分别选择选择窗体事件中的“MouseUp”、"MouseDown"、"MouseMove"事件。添加如下代码:

 private void Form1_MouseUp(object sender, MouseEventArgs e)

        {
            g = this.CreateGraphics();               //创建Graphics对象实例
            Pen p = new Pen(Color.Red,4);      //设置画笔颜色和宽度
            if (radioButton1.Checked == true)
            {
                g.DrawLine(p, startX, startY, e.X, e.Y);  //绘制直线
            }
        }

        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.Blue,2);       //设置画笔颜色和宽度
            if (radioButton2.Checked == true)
            {
                g.DrawRectangle(p,e.X,e.Y,1,1);    //绘制曲线
            }
        }

4.分别双击“清空”和“退出”按钮,添加:

private void button1_Click(object sender, EventArgs e)

        {
            g = this.CreateGraphics();
            g.Clear(Color.Snow);       //清空窗体背景
        }

        private void button2_Click(object sender, EventArgs e)

        {
            this.Close();
            Application.Exit();
        }

转载于:https://www.cnblogs.com/Peter-Luo/p/CSharp_Draw_line.html

你可能感兴趣的文章
conversation with super KDL
查看>>
3. Git与TortoiseGit基本操作
查看>>
正則表達式匹配号码
查看>>
Codeforces Beta Round #10 B. Cinema Cashier (树状数组)
查看>>
Zookeeper zkui-zookeeper图形化管理工具
查看>>
线段树
查看>>
LLVM提议向C语言中加入模块机制
查看>>
免费学习视频
查看>>
Winodws10 &system进程占用磁盘100%
查看>>
css样式优先级
查看>>
遇见未知的自己
查看>>
js中return;、return true、return false;区别
查看>>
关于list的一些作业
查看>>
bzoj 2818: Gcd
查看>>
bzoj千题计划316:bzoj3173: [Tjoi2013]最长上升子序列(二分+树状数组)
查看>>
JDK1.8之后匿名内部类访问方法中的局部变量不用加final修饰
查看>>
九度oj题目1521:二叉树的镜像
查看>>
java运行时内存分类
查看>>
为什么说 Git 比 SVN 更好
查看>>
CSS的定位和浮动
查看>>