c# - 旋转后获取坐标

标签 c# wpf

我有一个用户控件,它包含一个矩形和矩形左右边缘的 2 个椭圆。 我有兴趣在发生平移和旋转渲染变换后找出用户控件的坐标。

用户控件包含在 Canvas 中。

编辑: 在互联网上搜索了一段时间后,我在这里找到了问题的答案 http://forums.silverlight.net/forums/p/136759/305241.aspx所以我想我会为遇到此问题的其他人发布链接。

我已将 Tomas Petricek 的帖子标记为答案,因为它是最接近解决方案的帖子。

最佳答案

如果你想自己实现计算,那么你可以使用下面的方法来计算一个点旋转(指定度数)后的位置:

public Point RotatePoint(float angle, Point pt) { 
   var a = angle * System.Math.PI / 180.0;
   float cosa = Math.Cos(a), sina = Math.Sin(a);
   return new Point(pt.X * cosa - pt.Y * sina, pt.X * sina + pt.Y * cosa);
}

通常,您可以将转换表示为矩阵。要组合转换,您只需将矩阵相乘,因此这是一个非常可组合的解决方案。表示旋转的矩阵包含上述方法中的 sincos 值。参见 Rotation matrix (和 Transformation matrix )在维基百科上。

关于c# - 旋转后获取坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5180685/

相关文章:

c# - 在 C# 中给定周数和年份计算一周的开始和结束日期(基于 ISO 规范)

c# - WPF 图像滑动以像在 iOS 中一样更改图像

c# - 如何在不阻塞 UI 线程的情况下在执行多个任务后继续?

.net - 创建了可绑定(bind)的 WindowsFormsHost,但子更新未反射(reflect)到控件

wpf - XAML DataContext 和 ViewModel 类型

c# - 数据绑定(bind) DataGridView 单元格格式 Int 到月份名称转换

c# - 可执行文件可以作为 blob 触发的 Azure 函数的一部分运行吗?

c# - 无法加载文件或程序集 log4net

WPF:如何在 View 中创建 ViewModel

c# - 自定义控件的基类