【CITE】利用鼠标绘图C#
实例018 利用鼠标绘图
光盘位置:光盘\MR\01\018
在常用的画图软件中,用户一般都可以通过鼠标在其中绘图,那么该功能是如何实现的呢?本实例将讲解如何使用C#实现通过拖动鼠标在窗体上绘图的功能,实例运行效果如图1.18所示。
![]() |
图1.18 利用鼠标绘图 |
本实例实现时主要用到了Graphics类的DrawLine方法和MouseEventArgs类的X属性、Y属性,下面分别对它们进行详细介绍。
Graphics类中的DrawLine方法主要用来绘制直线,该方法为可重载方法,本实例中用到的重载形式如下:
- 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#的更多相关文章
- 有关Canvas的一点小事--鼠标绘图
1. 如何根据鼠标位置获取canvas上对应位置的x,y. 2. canvas的图糊了,设置宽和高的方式不对. 3.鼠标绘图代码 之前听说过canvas这个元素,但是实际上并没有深入了解过.不过日 ...
- 利用WPF绘图
C#入门经典 25章的一个例子,利用WPF绘图. XAML: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/p ...
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...
- python中利用matplotlib绘图可视化知识归纳
python中利用matplotlib绘图可视化知识归纳: (1)matplotlib图标正常显示中文 import matplotlib.pyplot as plt plt.rcParams['fo ...
- C语言实现鼠标绘图
使用C语言+EGE图形库(Easy Graphics Engine).思路是通过不断绘制直线来实现鼠标绘图的功能,前一个时刻鼠标的坐标作为直线的起点,现在时刻的坐标作为终点(严格意义是线段而不是直线) ...
- 利用box-shadow绘图
上篇博客提到过,box-shadow属性的本质是对形状的复制,那么如果我设置一个1*1px的i标签,利用box-shadow可以叠加的特性,给每一个1*1px的阴影赋上颜色,那么最后不就是一幅图片了么 ...
- python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框
最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测.于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是: 1.在视 ...
- Emgu 学习(3) 绘图,使用鼠标绘图,使用trackbar
绘图 class Program { static void Main(String[] args) { Mat img = , , DepthType.Cv8U, ); img.SetTo(, , ...
- 利用PHP绘图函数实现简单验证码功能
index.php __________________________________________________________________________________________ ...
随机推荐
- Python安装指南
说明:我的安装环境是centos6.4 ,32位系统:(#号之后内容为注释说明内容) 1.准备 centos是自带python的,所以可以在shell下直接执行:python 可以看到相应的打印信息, ...
- Utility
#region Tools public static string ForMatDateTime(DateTime dt, string formatStr) { return string.For ...
- 3DES 加解密
using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Comm ...
- 协方差Covariance的表述推导
今天想了一下关于概率论的一维数据期望.方差以及高维数据的矩阵表示,突然想到为什么在一维中 方差的表示为:V(x) = E((x-E(x))2) 而到了高维,这样的表述就成了协方差呢?V(X) = E( ...
- CurlSharp
https://github.com/masroore/CurlSharp clone版本库之后,在本地使用,会遇到找不到dll的情况 编译EasyGet项目之后,进行调试,会提示 System.Ba ...
- Example of Get_File_Name Function in Oracle Forms
Displays the standard open file dialog box where the user can select an existing file or specify a n ...
- [51NOD1230]幸运数(数位DP)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1230 dp(l,s,ss)表示长度为l的数各位和为s,各位平方 ...
- Intellij IDEA中使用Struts2
据说struts2中有很多的漏洞, 不过作为学习我也就用了吧, 因为书上面是按着这个讲的呀. 难怪官网上也没有struts2.2.1的版本的下载. 1. 下载struts2.2.1 ga版本 2. 新 ...
- Java中正则表达式的使用
public class Test{ public static void main(String args[]) { String str="@Shang Hai Hong Qiao Fe ...
- CUBRID学习笔记 25 数据类型2
---恢复内容开始--- 6枚举类型 语法 <enum_type> : ENUM '(' <char_string_literal_list> ')' <char_str ...