WPF画图5000个以上,再画十字线鼠标移动很卡,求解决
Line line1;
Line line2;
private void Main_MouseMove(object sender, MouseEventArgs e)
{
if (line1 != null)
{
main.Children.Remove(line1);
main.Children.Remove(line2);
}
Point p = e.GetPosition(this);
line1 = new Line();
line1.Stroke = Brushes.White;
line1.StrokeThickness = 1;
line1.X1 = 0;
line1.X2 = main.ActualWidth;
line1.Y1 = p.Y;
line1.Y2 = p.Y;
line1.SnapsToDevicePixels = true;
line2 = new Line();
line2.Stroke = Brushes.White;
line2.StrokeThickness = 1;
line2.X1 = p.X;
line2.X2 = p.X;
line2.Y1 = 0;
line2.Y2 = main.ActualHeight;
line2.SnapsToDevicePixels = true;
main.Children.Add(line1);
main.Children.Add(line2);
}
Rectangle rect;
private void button_Click(object sender, RoutedEventArgs e)
{
Random rd = new Random();
for (int i = 0; i < 5000; i++)
{
rect = new Rectangle();
rect.Fill = new SolidColorBrush(Colors.Black);
rect.Stroke = new SolidColorBrush(Colors.White);
rect.Width = 10;
rect.Height = 10;
main_canvas.Children.Add(rect);
Canvas.SetLeft(rect, rd.Next(Convert.ToInt32(main_canvas.ActualWidth)));
Canvas.SetTop(rect, rd.Next(Convert.ToInt32(main_canvas.ActualHeight)));
}
}
相关推荐
wpf 可缩放的canvas
这个是转的一个可缩放的canvas例子,可以直接用,很方便
WPF系列教程(十一):鼠标操作
鼠标操作的四个事件: MouseEnter:鼠标移动到元素时触发事件 MouseLeave:鼠标离开元素时触发事件 PreviewMouseMove:隧道路由事件,鼠标移动时触发MouseEventArgs事件 MouseMove:冒泡路由事件,鼠标移动时触发MouseEventArgs事件 一个对象: MouseEventArgs:触发事件 举例,在WPF项目中,捕获鼠标的位置。当鼠标在上方蓝色矩形中移动时,在最下方TextBlock中显示鼠标位置。 ...
WPF GDI+画图
文章内的代码主要是介绍了如何通过GDI+的方式在WPF中进行画图。 /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { private System.Drawing.Image bitm
WPF控件游标与十字线设计及交互优化
在UI开发中,游标(Cursor)和十字线(Crosshair)是提升用户体验的关键交互元素。游标通过视觉反馈指示操作状态,而十字线则用于精准定位场景。WPF框架通过其强大的渲染系统和数据绑定机制,使这些元素的实现更加高效。特别是在MVVM架构下,可以实现视觉表现与业务逻辑的解耦。本文深入解析WPF中游标系统的核心机制,包括自定义游标、状态同步等实现方案,以及十字线的三种典型实现模式对比。针对高性能场景,介绍了基于DrawingVisual的优化策略和3D场景中的特殊处理技巧,为开发专业级交互工具提供实践指
C#源码系统操作设置鼠标样式
C#源码系统操作设置鼠标样式


