winform鼠标画线
来源:互联网 发布:2016年快递行业数据 编辑:程序博客网 时间:2024/04/28 19:12
鼠标画线要用到mousedown、mouseup和mousemove事件,这里先介绍三个事件然后再给出鼠标画线的代码。
1.MouseDown事件
当鼠标指针位于控件上并按下鼠标键时发生。
语法:
public event MouseEventHandler MouseDown
MouseEventHandler:表示将处理窗体、控件或其他组件的MouseDown、MouseUp或 MouseMove事件的方法。
MouseEventHandler委托事件语法:
public delegate void MouseEventHandler (Object sender,MouseEventArgs e)
sender:事件源。
e:包含事件数据的MouseEventArgs。
MouseEventArgs用来构造函数对数,其公共属性及说明如表所示。
表 MouseEventArgs参数属性及说明
属性说明Button获取曾按下的是哪个鼠标按钮Clicks获取按下并释放鼠标按钮的次数Delta获取鼠标轮已转动的制动器数的有符号计数。制动器是鼠标轮的一个凹口Location获取鼠标在产生鼠标事件时的位置X获取鼠标在产生鼠标事件时的x坐标Y获取鼠标在产生鼠标事件时的y坐标
示例 MouseDown事件的使用
本示例单击鼠标右键,弹出快捷菜单。
程序主要代码如下。
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
OnMouseDown = true;
if (e.Button == MouseButtons.Right)
{
this.contextMenuStrip1.Show(this, new Point(e.X, e.Y));
}
}
2.MouseUp事件
当鼠标指针在控件上并释放鼠标按键时发生。
语法:
public event MouseEventHandler MouseUp
示例 MouseUp事件的使用
本示例实现的是,程序运行的时候,触发鼠标MouseUp事件,并给变量赋值。
程序主要代码如下。
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
OnMouseDown = false;
}
鼠标画线代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
bool flag = false;//是否按下点击
bool flagmove = false;//是否可以移动后重画
public Form1()
{
InitializeComponent();
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (flag)
{
flagmove = true;
}
Point p1 = new Point();
Point p2 = new Point();
p1.X = e.X;
p1.Y = e.Y;
p2.X = PointToClient(MousePosition).X;
p2.Y = PointToClient(MousePosition).Y;
double length;
while (flag)
{
if (flagmove)
{
Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Blue, 0.2f);
g.DrawLine(p, p1, p2);
p1.X = p2.X;
p1.Y = p2.Y;
flagmove = false;
}
else
{
p2.X = PointToClient(MousePosition).X;
p2.Y = PointToClient(MousePosition).Y;
length = Math.Sqrt(Math.Pow(Math.Abs(p1.X - p2.X), 2) + Math.Pow(Math.Abs(p1.Y - p2.Y), 2));
if (length >= 10)
{
flagmove = true;
}
}
}
}
public void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Cursor = Cursors.Cross;
flag = true;
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
this.Cursor = Cursors.Default;
flag = false;
flagmove = false;
}
}
}
- winform鼠标画线
- winform 根据鼠标移动画线
- MFC鼠标响应、鼠标画线
- flex 实现鼠标画线
- java---鼠标画线
- 鼠标画线程序
- 随鼠标移动画线
- 点击鼠标两点画线
- MFC 鼠标实时画线
- MFC 鼠标画线总结
- 【Unity】unity 鼠标画线
- Matlab GUI鼠标画线
- 鼠标画线汇集代码
- 鼠标画线条小程序
- 窗体上鼠标移动画线
- unity--鼠标画线、画图实现
- gui画线和绘制鼠标
- unity--鼠标画线、画图实现
- blog 分类集合
- 笔记:一个do...while的使用!~
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言
- C#——正则表达式的使用
- opengl 不错的网站
- winform鼠标画线
- Andorid Launcher程序代码分析
- jquery搜索框效果,搜索,请输入关键字
- MyEclipse安装Spket插件包
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制
- poj 2392 Space Elevator 二进制拆包多重背包
- 云计算简单科普
- WebClient的超时问题及解决
- 51单片机开发环境及其工具