【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 __________________________________________________________________________________________ ...
随机推荐
- iOS奔溃日志总结
1,http://www.cnblogs.com/qingjoin/p/3515902.html 2,http://blog.csdn.net/u012269653/article/details/4 ...
- 给table设置滚动条
<div scroll="no" style="width:1200px;overflow-x:scroll;overflow-y:hidden"> ...
- php获取汉字的拼音 拼音首字母
/***获取汉字的拼音*/function pinyin($s, $isfirst = false) { static $pinyins; $s = trim($s); $len = strlen($ ...
- 求解数组环中最大子数组和的问题(java)
//石家庄铁道大学 信1405-1 班 唐炳辉 在上一次作业中,对于普通数组的最大子数组的求解问题的基础上,将普通的数组变成一个首尾相接的环,求这个环的最大子数组.类似的,只要改变普通数组的数组位置, ...
- .Net面試4套
一 1. 面向对象的思想主要包括什么? 答: 继承,多态,封装,类,对象,接口,聚集,聚合,泛化 2. 什么是ASP.net中的用户控件 答: 用户控件就是使用.ascx作为扩展名的文件,其将多种服务 ...
- UVA 10534 三 Wavio Sequence
Wavio Sequence Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Sta ...
- TreeList的使用
添加列 TreeListColumn column = treeList1.Columns.Add(); column.Caption = @"建筑列表"; column.Visi ...
- Linux系统下如何配置SSH?如何开启SSH
查询\安装SSH服务 1.登陆linux系统,打开终端命令.输入 rpm -qa |grep ssh 查找当前系统是否已经安装 2.如果没有安装SSH软件包,可以通过yum 或rpm安装包进行安装( ...
- Servlet异常及其生命周期
Servlet 异常 在javax.servlet包中定义了两个异常类 ServletException类 ServletException类定义了一个通用的异常,可以被init().service( ...
- Android——android相对布局(RelativeLayout)及属性
RelativeLayout布局 android:layout_marginTop="25dip" //顶部距离 android:gravity="left" ...