C#移动折线
发布时间:2020-12-15 21:13:46 所属栏目:百科 来源:网络整理
导读:我是C#图形编程的新手.昨天我开始了一个新项目( WPF).有一个Polyline对象,我必须沿着屏幕移动我正在计算的坐标.我不知道如何移动对象并制作类似动画的东西.在鼠标按下时我想启动此方法Move()之后进入while循环并且条件完成时(end == true)我想结束循环并完成
我是C#图形编程的新手.昨天我开始了一个新项目(
WPF).有一个Polyline对象,我必须沿着屏幕移动我正在计算的坐标.我不知道如何移动对象并制作类似动画的东西.在鼠标按下时我想启动此方法Move()之后进入while循环并且条件完成时(end == true)我想结束循环并完成动画.当我在循环中时,我的想法是以慢动作移动我的折线.我试图将Move()放入一个线程并使用Thread.Sleep(…);但我只能看到Polyline的最终位置.
我试着将它放入新的Thread(新的ThreadStart(Move)); …和this.Dispatcher.BeginInvoke,效果是一样的. 你能告诉我,我怎么能做这个动作? public void Move() { bool end = false; while (!end) { double x = lastPosX; double y = lastPosY; double a = y1 - y; double b = x - x1; double c = -x * y1 + x1 * y; double u,v; GetC(out u,out v); if (y1 < lastPosY) { GetCoordinates(ref u,ref v); } if (u > width || v > height) { gameEnd = true; } lastPosX = u; lastPosY = v; p.Points.Remove(p.Points.First()); p.Points.Add(new Point(u,v)); } } 解决方法
我无法弄清楚你的Move方法是如何工作的,但这里是一个如何在MouseDown上将Polyline从左向右移动的示例.希望您能够根据自己的需求进行调整
XAML <Canvas Name="myCanvas"> <Polyline Name="myPolyline" MouseDown="Polyline_MouseDown" Canvas.Left="75" Canvas.Top="50" Points="25,25 0,50 25,75 50,25 25,0" Stroke="Blue" StrokeThickness="10"/> </Canvas> 代码背后 private void Polyline_MouseDown(object sender,MouseButtonEventArgs e) { double left = Canvas.GetLeft(myPolyline); var animationThread = new Thread(new ThreadStart(() => { while (left < 300) { left += 10; // SetLeft is done in the UI thread Dispatcher.Invoke(new Action(() => { Canvas.SetLeft(myPolyline,left); })); Thread.Sleep(50); } })); animationThread.Start(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |