实例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. 一个Public的字段引起的,谈谈继承中的new

    一直觉得对c#面向对象这块已经掌握的很好了,因为正常情况下字段一般我们设计成私有的,今天突然想到一个实验,如下有两个很简单的类: public class Farther { ; public vir ...

  2. 十一、Swing

    1.Swing常用窗体 (1)JFrame框架窗体 JFrame窗体是一个容器,是Swing程序中各组件的载体. 语法:JFrame jf = new JFrame(title); Container ...

  3. 学习html5第一天

    HTMl5作为web标准的一种,在2004年诞生,web超文本应用技术工作组WHATWG将它发展起来,W3C由开始的不赞同到与WHATWG共同合作,并在2015年开始推广.并随着浏览器的不断支持和兼容 ...

  4. Systematic LncRNA Classification

    Systematic LncRNA Classification From: http://www.arraystar.com/Services/Services_main.asp?ID=307 An ...

  5. C# 线程(六):定时器

    From : http://kb.cnblogs.com/page/42532/ Timer类:设置一个定时器,定时执行用户指定的函数. 定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数. ...

  6. GitHub详细教程(转载)

    1 Git详细教程 1.1 Git简介 1.1.1 Git是何方神圣? 1.1.2 重要的术语 1.1.3 索引 1.2 Git安装 1.3 Git配置 1.3.1 用户信息 1.3.2 高亮显示 1 ...

  7. KaliLinux装好系统后安装常用软件

    1.配置软件源 leafpad /etc/apt/source.list or(recommand):#官方源deb kali main non-free contribdeb-src kali ma ...

  8. 不含类解决最后一个li边距问题

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. [转载] Linux 文件系统结构介绍

    原文: https://linux.cn/article-6132-weibo.html Linux中的文件是什么?它的文件系统又是什么?那些配置文件又在哪里?我下载好的程序保存在哪里了?在 Linu ...

  10. zoj2589Circles(平面图的欧拉定理)

    链接 连通图中: 设一个平面图形的顶点数为n,划分区域数为r,一笔画笔数为也就是边数m,则有: n+r-m=2 那么不算外面的那个大区域的话 就可以写为 n+r-m = 1 那么这个题就可以依次求出每 ...