手机
当前位置:查字典教程网 >编程开发 >C语言 >用C# 实现鼠标框选效果的实现代码
用C# 实现鼠标框选效果的实现代码
摘要:实现步骤:1.实现整个鼠标框选的几个事件(down、move、up),当鼠标点下记录鼠标框选的起点,鼠标抬起结束操作。2.以鼠标框选过程中获...

实现步骤:

1.实现整个鼠标框选的几个事件(down、move、up),当鼠标点下记录鼠标框选的起点,鼠标抬起结束操作。

2.以鼠标框选过程中获取的鼠标坐标为基点计算框选的矩形的4点坐标,4点坐标以顺时针方向布点。

3.通过Shape.Path类实现在类上画出此矩形。

代码如下:

复制代码 代码如下:

namespace HostDemo {

public class HostCanvas : Canvas {

public HostCanvas() {

InitializeComponent();

}

private void InitializeComponent() {

this.Loaded += OnLoad;

this.MouseDown += OnMouseDown;

this.MouseMove += OnMouseMove;

this.MouseUp += OnMouseUp;

locus = new Path();

locus.Fill = new SolidColorBrush(Color.FromArgb(1, 255, 255, 255));

locus.Stroke = Brushes.Red;

locus.StrokeThickness = 1;

locus.IsManipulationEnabled = true;

}

void OnMouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e) {

ispath = false;

}

void OnMouseMove(object sender, System.Windows.Input.MouseEventArgs e) {

if(ispath){

endpoint = e.GetPosition(this);

locus.Data = DrawingRect(startpoint,endpoint);

}

}

void OnMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) {

if(!this.Children.Contains(locus)) this.Children.Add(locus);

if (locus.Data != null) locus.Data = null;

startpoint = e.GetPosition(this);

ispath = true;

}

void OnLoad(object sender, System.Windows.RoutedEventArgs e) {

this.Background = new SolidColorBrush(Color.FromArgb(35, 255, 255, 255));

}

private PathGeometry DrawingRect(Point beginpoint, Point closepoint) {

PathGeometry result = new PathGeometry();

PathFigure figure = new PathFigure();

figure.IsClosed = true;

figure.StartPoint = beginpoint;

PathSegmentCollection pathSegmentCollection = new PathSegmentCollection();

PathFigureCollection pathFigureCollection = new PathFigureCollection();

LineSegment m1 = new LineSegment();

m1.Point = new Point(closepoint.X, beginpoint.Y);

LineSegment m2 = new LineSegment();

m2.Point = closepoint;

LineSegment m3 = new LineSegment();

m3.Point = new Point(beginpoint.X, closepoint.Y);

pathSegmentCollection.Add(m1);

pathSegmentCollection.Add(m2);

pathSegmentCollection.Add(m3);

figure.Segments = pathSegmentCollection;

pathFigureCollection.Add(figure);

result.Figures = pathFigureCollection;

return result();

}

private Path locus;

private bool ispath = false;

private Point startpoint;

private Point endpoint;

}

}

【用C# 实现鼠标框选效果的实现代码】相关文章:

美化你的代码 vb(VBS)代码格式化的实现代码

递归法求最大公约数和最小公倍数的实现代码

解析在WTL下使用双缓冲的实现方法

求子数组最大和的实例代码

使用ShellClass获取文件属性详细信息的实现方法

二分法求多项式在-10 10间值的实现代码

ShellExecute函数用法的实例代码

自己实现strcpy函数的实现方法

c++ 巧开平方的实现代码

C++ 创建桌面快捷方式 开始菜单的实现代码

精品推荐
分类导航