手机
当前位置:查字典教程网 >编程开发 >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# 实现鼠标框选效果的实现代码】相关文章:

使用OpenGL实现3D立体显示的程序代码

atoi和itoa函数的实现方法

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

C语言中函数与指针的应用总结

用C++实现队列的程序代码

C++ 基本算法 冒泡法、交换法、选择法、实现代码集合

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

C 二分查找 递归与非递归的实现代码

用C实现PHP扩展 Fetch_Url 类数据抓取的方法

方阵顺时针旋转的实现代码

精品推荐
分类导航