当前位置: 首页 > 编程语言 > C#

在画布周围移动矩形分享

时间:2023-04-10 23:55:45 C#

在画布周围移动矩形我的应用程序在中间有一个画布,周围有控件。我有一个接收点并将它们保存在列表中的套接字。我在画布上为列表中的点绘制了4x4的小矩形。比方说4个点……和4个矩形。我希望能够在点数随代码变化时移动矩形。如果没有情节提要或任何“动画”类,这可能吗?我将如何做我需要的?我试过:'cMap.Children.Remove(r)'DimnrAsRectangle=NewRectangle()With{.Width=4,.Height=4,.Name="r"&P.??Name,.Fill=Brushes.Red}'r.RenderTransform=NewTranslateTransform(P.Position.X,P.Position.Y)Canvas.SetTop(cMap.Children(cMap.Children.IndexOf(r)),(512/2)+P.位置。Y)Canvas.SetLeft(cMap.Children(cMap.Children.IndexOf(r)),(512/2)+P.Position.X)'nr.SetValue(Canvas.TopProperty,(512/2)+P.Position.Y)'nr.SetValue(Canvas.LeftProperty,(512/2)+P.Position.X)'P.Position.X)'cMap.Children.Add(nr)所有这些都没有让矩形移动。是的,我确保数据在变化。太感谢了。我认为通过将Canvas.Left和Canvas.Top附加属性绑定到ObservableCollection>有更多漂亮的解决方案,但是当你在这里要求一个老式的WinForms样式解决方案时,你有一些我认为你需要的东西(我很抱歉在C#中编写此代码:XAML:移动随机点添加点删除随机点代码背后:使用系统;使用System.Collections.Generic;使用System.Windows;使用System.Windows.Controls;使用System.Windows.Media;使用系统.Windows.Shapes;namespaceMovingPointsSpike{publicpartialclassMainWindow:Window{privateListm_Points;privateRandomm_Random;publicMainWindow(){InitializeComponent();m_Points=newList();m_Random=newRandom();}privatevoidMove_Click(对象发送者,RoutedEventArgse){Rectanglerectangle;PointnewPoint;intindex=GetRandomIndex();newPoint=GetRandomPoint();rectangle=(Rectangle)PointCanvas.Children[index];if(index==-1)return;Canvas.SetTop(矩形,newPoint.Y);Canvas.SetLeft(矩形,newPoint.X);}privatevoidAdd_Click(objectsender,RoutedEventArgse){点n点;长方形长方形;newPoint=GetRandomPoint();rectangle=newRectangle{Width=4,Height=4,Fill=Brushes.Red};m_Points.Add(newPoint);PointCanvas.Children.Add(矩形);Canvas.SetTop(矩形,newPoint.Y);Canvas.SetLeft(矩形,newPoint.X);}privatePointGetRandomPoint(){intx;诠释y;x=m_Random.Next(10,490);y=m_Random.Next(10,490);返回新点(x,y);}privatevoidRemove_Click(objectsender,RoutedEventArgse){intindex=GetRandomIndex();如果(索引==-1)返回;PointCanvas.Children.RemoveAt(索引);m_Points.RemoveAt(索引);}privateintGetRandomIndex(){int索引;如果(m_Points.Count==0)返回-1;index=m_Random.Next(m_Points.Count-1);返回索引;}}}使用渲染事件CompositionTarget.Rendering+=UpdateRectangles;…protectedvoidUpdateRectangles(objectsender,EventArgse){//这里有一些东西Canvas.SetLeft(rectangle,location);}考虑使用CacheMode=“BitmapCache”以上就是C#学习教程:围绕画布移动矩形分享的所有内容。如果对您有用,需要进一步了解C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: