C# 如何获得安格尔酒店
我可以应用角度像C# 如何获得安格尔酒店,c#,.net,wpf,C#,.net,Wpf,我可以应用角度像 double angle = 30; Rectangle r = new Rectangle(); r.Width = 5; r.Height = 130; r.Fill = Brushes.Black; r.RenderTransform = new RotateTransform(angle); canvas1.Children.Add(r); 但是我不知道如何返回角度值?您可以保存旋转变换,稍后再访问它 RotateTransform rTransform = new
double angle = 30;
Rectangle r = new Rectangle();
r.Width = 5;
r.Height = 130;
r.Fill = Brushes.Black;
r.RenderTransform = new RotateTransform(angle);
canvas1.Children.Add(r);
但是我不知道如何返回角度值?您可以保存旋转变换,稍后再访问它
RotateTransform rTransform = new RotateTransform(angle);
...
var temp = rTransform.Angle;
变换是3x3矩阵。您可以阅读有关旋转特定位的信息 您可以使用
RenderTransform.Value
属性访问矩阵(而不是像之前理论中那样将一根线插入脑后)
使用
矩阵.M11
、矩阵.M12
、矩阵.M21
和矩阵.M22
值计算角度 您可以始终尝试将元素的渲染变换转换为旋转变换
,并(在成功转换的情况下)从角度
属性获取角度值:
var element = canvas1.Children[0];
var transform = element.RenderTransform as RotateTransform;
var angle = transform != null ? transform.Angle : 0.0;
为什么要在代码中首先创建UI元素?@HighCore我需要它。:)@HighCore与问题无关,在代码中创建UI元素也没有错。@FlyingStrudel除非这是某种自定义控件(不是用户控件)。这是一种非常糟糕的方法。这不是winforms,而是WPF,在WPF中有XAML,这是您创建UI的工具。即使目的是在控件中显示多个对象,也可以使用ItemsControl
和一些数据模板来实现。“这是WPF做事的方式。”高科先生,你需要安定下来。我不是在攻击你或你喜欢的开发方法。一个笼统的声明说在代码中声明UI元素是错误的或是史前的,这并不能说明全部情况。有时需要在三个文件和两个支持类中使用500行XAML才能进行更改,而在一个文件中使用100行C#就可以完成更改。选择哪条路径的决定应该基于开发和维护的成本,而不是盲目地遵循设计模式。如果你还想讨论这个问题,那就让聊天室不要把评论弄得乱七八糟。