什么是Transform转换

news/2025/3/18 2:33:51/文章来源:https://www.cnblogs.com/cdaniu/p/18232129

在WPF框架中有一个抽象类叫Transform,它定义了实现二维平面中的转换的功能。它包括旋转 (RotateTransform)、缩放 (ScaleTransform)、倾斜 (SkewTransform) 和平移 (TranslateTransform)4个子类。它定义如何将点从一个坐标空间映射或转换到另一个坐标空间。 此映射由转换 Matrix 来描述,它是一个三行三列 Double 值的集合。

这个类可以实现控件的各种转换,比如放置、缩放、倾斜和平移。

首先我们来看一下Transform的定义:

public abstract class Transform : GeneralTransform, IResource
{public static Transform Identity { get; }public abstract Matrix Value { get; }public override GeneralTransform Inverse { get; }public static Transform Parse(string source);public Transform Clone();public Transform CloneCurrentValue();public override Rect TransformBounds(Rect rect);public override bool TryTransform(Point inPoint, out Point result);}

Identity表示获取一个Transform 标识转换,Value表示当前的Matrix矩阵变换,Inverse表示获取当前转换的反函数,它的类型是GeneralTransform。

对于任何Transform对象,一旦使用它去变换某个元素后,它的Inverse属性就会有值。它是GeneralTransform类型,也就是一个变换器,用于将元素变换到原始状态,相当于是Transform的反向操作。需要注意的是,Inverse是用于返回到原始状态的,而不上一次转换的状态。

以下内容来自官网的解释

 

通过操作矩阵值,可以旋转、缩放、倾斜和移动(转换)对象。 例如,如果将第三行第一列的值(OffsetX 值)更改为 100,可使用它来将对象沿 x 轴移动 100 个单位。 如果将第二行第二列中的值更改为 3,可使用它来将对象的当前高度拉伸三倍。 如果同时更改这两个值,将使对象沿 x 轴移动 100 个单位,并将其高度拉伸 3 倍。 由于WPF仅支持仿射转换,因此右边列中的值始终为 0, 0, 1。

由于直接操作矩阵去设置旋转、缩放、倾斜和移动功能比较复杂,所以WPF提供了4个子类来设置相应的功能。例如,借助 ScaleTransform 类,通过设置其 ScaleX 和 ScaleY 属性即可缩放对象,而无需操作转换矩阵。 同样,借助 RotateTransform 类,只需设置其 Angle 属性,即可旋转对象。

下表中展示了2D转换

 .








本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/720129.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes – NodePort 服务

Kubernetes 中的 NodePort 服务是一种用于将应用程序公开到互联网的服务,最终用户可以从互联网访问它。如果您创建 NodePort 服务,Kubernetes 将分配 (30000-32767) 范围内的端口。最终用户可以使用节点的 IP 地址访问该应用程序。 Kubernetes 服务的类型 在Kubernetes 中,有…

造车新势力盘点

造车新势力盘点 雷军大声疾呼:“大家不要在小问题上卷了,没有价值!” 余承东表态:“要卷价值而不是卷价格!卷智能化、自动化,卷安全、高质量,卷卓越的、舒享的用户体验。” 6月1日,在第二届未来汽车先行者大会上,雷军、余承东等车企负责人发表了“反内卷”宣言。 确实…

未来门店画像

众多互联网企业,正在致力于帮助传统线下门店,进行数字化改造升级,场景、体验、品类重构、数字化……如今,各大零售商、品牌商正在朝着各个方向,努力打造“下一代零售门店”。 01 用户心智 从“单点突破”到“多点穿透” 现在消费者已经从单纯“找”货,升级成“找”货、“…

【git实际应用填坑解决】

工作中git填坑之路,有时候用小乌龟,有时候也用git命令。 - git 如何管理多个项目仓库? 1. git subtree 实现管理多仓库 A、 B 、 lib 都是仓库,其他lib是公共模块,在A,B中都有使用 优点: 提交方便,直接在当前项目目录就可修改公共模块lib并提交 在项目A 和 B 中创建公共…

36氪研究院 | 2023年中国工业软件行业洞察报告

36氪研究院 | 2023年中国工业软件行业洞察报告 36氪研究院2023-04-12 10:53关注国产替代蓝海市场,ChatGPT掀起智能化浪潮1、行业定义及发展历程 工业软件指应用于工业领域,以提高工业企业研发、生产、管理水平和工业装备性能为目的的应用软件,包括在工业互联网平台上运行的工…

git实际应用填坑解决

工作中git填坑之路,有时候用小乌龟,有时候也用git命令。 - git 如何管理多个项目仓库? 1. git subtree 实现管理多仓库 A、 B 、 lib 都是仓库,其他lib是公共模块,在A,B中都有使用 优点: 提交方便,直接在当前项目目录就可修改公共模块lib并提交 在项目A 和 B 中创建公共…

Kubernetes – 节点

Kubernetes 节点是实际工作发生的工作器或主机。每个 Kubernetes 节点都有执行 Pod 所需的服务,并由控制平面控制。每个 Kubernetes 节点可以有多个 Pod,Pod 内有容器运行。每个节点中有 3 个进程用于调度和管理这些 Pod。 Container runtime:需要容器运行时来运行在 pod 内…

leetcode 876. 链表的中间结点(快慢指针法)

题目描述 https://leetcode.cn/problems/middle-of-the-linked-list/description/给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1:示例 2:思路分析 用两个指针 slow 与 fast 一起遍历链表。slow 一次走一步,…

浅谈如何优化 Milvus 性能

浅谈如何优化 Milvus 性能发布于 2023-01-10 14:53:303.5K0举报文章被收录于专栏:Reinvent Data ScienceMilvus 是全球最快的向量数据库,在最新发布的 Milvus 2.2 benchmark[1] 中,Milvus 相比之前的版本,取得了 50% 以上的性能提升。值得一提的是,在 Master branch 的最新…

Kubernetes – Namespaces

Kubernetes 命名空间是一种让您能够组织资源的机制。它就像集群内的虚拟集群。命名空间将资源与其他命名空间的资源隔离开来。例如,您需要在一个命名空间中为部署/服务使用不同的名称,但您可以在两个不同的命名空间中为部署使用相同的名称。 初始命名空间kube-system: Maste…

opengauss双region流式容灾搭建

opengauss双region流式容灾搭建 云和恩墨-戚钰2023-05-30openGauss本文出处:https://www.modb.pro/db/626197 一、主备双集群部署 架构:主集群:一主一备;灾备集群:一主一备 1. 安装集群 1 主节点:...41 备节点:..***.***45 xml 文件参考:<?xml version="1.0&…

leetcode160 相交链表

题目描述 https://leetcode.cn/problems/intersection-of-two-linked-lists/description/给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交: …