用鼠标画图

原创 2004年09月02日 16:47:00

用鼠标在窗体中画线

(作者:张均洪)

我们先在同一命名空间中定义一个类和一个接口:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;

public interface Ishape
    {
        void Draw(Graphics g);
    }
    //这个类提供画线的方法
    [Serializable]
    public class Line : Ishape
    {
        Point startP, endP;
        public Line(Point sp, Point ep)
        {
            this.startP = sp;
            this.endP = ep;
        }
        public void Draw(Graphics g)
        {
            g.DrawLine(Pens.Black, startP, endP);
        }
    }

新建一个窗体:FORM1

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization;
using System.Collections;

//定义窗体级公用变量

 //开始画线的起点坐标,此变量的值将在MOUSEDOWN事件中确定
        Point startPoint;
        //定义一个ARRAYLIST,用于存储对象
        private ArrayList shapes=new ArrayList();

 protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            //GETENUMERATOR返回枚举数对象,这个对象为类
            IEnumerator shapeEnum = shapes.GetEnumerator();
            //WHILE是查找出合适的类,并利用其DRAW方法
           while (shapeEnum.MoveNext())
            {
                Ishape shape = (Ishape)shapeEnum.Current;
                //运用相关类的DRAW方法,
                //当我们前面定义多个方法时很有用,比例我们还可以加些
                //画矩形(DrawRectangle)画园(DrawEllipse)等
                //在这里我们只定义一个方法(画线)。

                shape.Draw(g);
               
            }
        }

 

 private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button ==System.Windows.Forms.MouseButtons.Left)
            {
                //鼠标按下确定起点的坐标,把这个变量赋于STARTPOINT值
                startPoint = new Point(e.X, e.Y);
            }
        }

 

 private void Form1_MouseUp(object sender, MouseEventArgs e)
        {                   
            Point endpp = new Point(e.X, e.Y);
            if (e.Button ==System.Windows.Forms.MouseButtons.Left)
            {
                //把LINE类添加到定义好的ARRARYLIST中,以便
                //ONPAINT事件处理。
                shapes.Add(new Line(startPoint, endpp));
            }
            //这句很关键,没有这句你无法看见你的画的线。
            //ONPAINT事件,是在窗体在激活,改变大小,加载,刷新的时候
            //才能进行,所以当我们的动作完成后,必须对窗体进行
            //刷新操作。
            this.Refresh();
          
        }

在新建窗体后注意把窗体背景设为白色喔!!

利用鼠标实现画图功能 java

public class drawPanel extends JPanel implements MouseListener,MouseMotionListener{ Point start=n...
  • yuge1hao
  • yuge1hao
  • 2014-04-08 09:10:32
  • 1939

C#代码利用鼠标绘图

  • 2017年05月22日 15:55
  • 300KB
  • 下载

flash as3 鼠标绘图

本文用AS3分别描绘了曲线、直线、圆、椭圆和矩形5种绘制方法,希望能给大家带来帮助! (1):曲线 知识点: 1、添加鼠标监听事件MouseEvent; 2、规定画布大小; 3、moveTo...
  • liangyamin
  • liangyamin
  • 2012-01-19 23:32:00
  • 3190

HTML canvas原生js实现鼠标画图

这是一篇对于当前流行的HTTML5 canvas 鼠标画图的总结
  • mixue321
  • mixue321
  • 2015-11-06 12:05:11
  • 4202

基于JPanel以及鼠标监听的Java 画图程序

  • 2010年06月05日 22:05
  • 20KB
  • 下载

用VC6.0写的鼠标画图

  • 2010年12月09日 21:07
  • 904KB
  • 下载

canvas画图:用鼠标---画曲线,直线,矩形,圆

var canvas = document.getElementById('canvas'); // 得到画布 var ctx = canvas.getContext('2d'); // 得到画布的...
  • qq_31164127
  • qq_31164127
  • 2017-06-08 17:28:10
  • 2592

java语言中的监听事件利用鼠标实现画图功能

  • 2012年05月15日 22:03
  • 2KB
  • 下载

MFC程序设计,使用鼠标画图程序,包括多变形的画法

  • 2009年09月25日 11:06
  • 93KB
  • 下载

C在控制台上实现鼠标画图功能

#include #include #include HANDLE hOut; HANDLE hIn; void ClearScreen(void); void DispMousePos(COO...
  • morixinguan
  • morixinguan
  • 2016-10-13 13:52:52
  • 1321
收藏助手
不良信息举报
您举报文章:用鼠标画图
举报原因:
原因补充:

(最多只允许输入30个字)