实例018 利用鼠标绘图

光盘位置:光盘\MR\01\018

在常用的画图软件中,用户一般都可以通过鼠标在其中绘图,那么该功能是如何实现的呢?本实例将讲解如何使用C#实现通过拖动鼠标在窗体上绘图的功能,实例运行效果如图1.18所示。

 
图1.18  利用鼠标绘图

本实例实现时主要用到了Graphics类的DrawLine方法和MouseEventArgs类的X属性、Y属性,下面分别对它们进行详细介绍。

Graphics类中的DrawLine方法主要用来绘制直线,该方法为可重载方法,本实例中用到的重载形式如下:

  1. public void DrawLine (Pen pen,Point pt1,Point pt2)

参数说明

pen:Pen对象,它确定线条的颜色、宽度和样式。

pt1:Point结构,它表示要连接的第一个点。

pt2:Point结构,它表示要连接的第二个点。

说明:关于MouseEventArgs类的X属性和Y属性的详细讲解,请参见实例005中的关键技术。

(1)打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,并将其命名为MouseToDraw。

(2)更改默认窗体Form1的Name属性为Frm_Main。

(3)程序主要代码如下:

private void Form1_MouseMove(object sender, MouseEventArgs e)
{ if (lastPoint.Equals(Point.Empty))
//判断绘图开始点是否为空 { lastPoint = new Point(e.X, e.Y);
//记录鼠标当前位置 } if (G_OnMouseDown)
//开始绘图 { Point cruuPoint = new Point(e.X, e.Y);
//获取鼠标当前位置 graphics.DrawLine(pen, cruuPoint, lastPoint);
//绘图 } lastPoint = new Point(e.X, e.Y);
//记录鼠标当前位置
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{ G_OnMouseDown = false;
//开始绘图标识设置为false
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{ G_OnMouseDown = true; //开始绘图标识设置为true
}

【CITE】利用鼠标绘图C#的更多相关文章

  1. 有关Canvas的一点小事--鼠标绘图

    1.  如何根据鼠标位置获取canvas上对应位置的x,y. 2.  canvas的图糊了,设置宽和高的方式不对. 3.鼠标绘图代码 之前听说过canvas这个元素,但是实际上并没有深入了解过.不过日 ...

  2. 利用WPF绘图

    C#入门经典 25章的一个例子,利用WPF绘图. XAML: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/p ...

  3. 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域

    这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...

  4. python中利用matplotlib绘图可视化知识归纳

    python中利用matplotlib绘图可视化知识归纳: (1)matplotlib图标正常显示中文 import matplotlib.pyplot as plt plt.rcParams['fo ...

  5. C语言实现鼠标绘图

    使用C语言+EGE图形库(Easy Graphics Engine).思路是通过不断绘制直线来实现鼠标绘图的功能,前一个时刻鼠标的坐标作为直线的起点,现在时刻的坐标作为终点(严格意义是线段而不是直线) ...

  6. 利用box-shadow绘图

    上篇博客提到过,box-shadow属性的本质是对形状的复制,那么如果我设置一个1*1px的i标签,利用box-shadow可以叠加的特性,给每一个1*1px的阴影赋上颜色,那么最后不就是一幅图片了么 ...

  7. python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框

    最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测.于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是: 1.在视 ...

  8. Emgu 学习(3) 绘图,使用鼠标绘图,使用trackbar

    绘图 class Program { static void Main(String[] args) { Mat img = , , DepthType.Cv8U, ); img.SetTo(, , ...

  9. 利用PHP绘图函数实现简单验证码功能

    index.php __________________________________________________________________________________________ ...

随机推荐

  1. 思考之一——PM(Project Manager)

    摘自:http://blog.csdn.net/moreevan/article/details/6697806

  2. 3.求m+mm+mmm+…+m…m(n个)的和,其中m为1~9之间的整数。 例如,当m=3、n=4时,求3+33+333+3333的和。

    package a; public class QiuHe { private int m; private int n; public int getM() { return m; } public ...

  3. The Pilots Brothers' refrigerator

    2965 he Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1 ...

  4. [POJ1222]EXTENDED LIGHTS OUT(高斯消元,异或方程组)

    题目链接:http://poj.org/problem?id=1222 题意:开关是四连通的,每按一个就会翻转自己以及附近的四个格(假如有).问需要翻转几个,使他们都变成关. 把每一个灯看作一个未知量 ...

  5. ___security_cookie机制,防止栈溢出

    从研究底层和汇编以来,已经多次接触到“栈溢出”这个名词了. 这次在汇编码中看到了个不明就里的 ___security_cookie ,查了下,原来是编译器的安全检查机制.转载一篇文章: 首先,secu ...

  6. [SAP ABAP开发技术总结]日期函数

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  7. [SAP ABAP开发技术总结]几个小技巧

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. mount命令

    注:硬件设备由linux系统自动识别,但必须成功挂载后才能使用 mount #查询已挂载 mount -a #依据配置文件/etc/fstab的内容自动挂载 挂载命令格式: mount  [-t 文件 ...

  9. 一张png图片 上面有多个图标,如何用CSS准确的知道其中某个图片的坐标

    一张png图片 上面有多个图标,如何用CSS准确的知道其中某个图片的坐标 ,如下图 可以使用  background background:url(images/xx.png) 40px 10px n ...

  10. javascript获取类元素

    代码测试是ie5+: 原生javascript中筛选出含有指定类的元素: 思想:在指定范围里把所有的元素筛选出来,然后把里面的每个元素都遍历找出它们含有的所有类,然后逐个元素遍历它们各自的类,如果指定 ...