将反应从一个系统转换为另一个系统

Posted

技术标签:

【中文标题】将反应从一个系统转换为另一个系统【英文标题】:converting a rect from one sytem to another 【发布时间】:2013-10-22 08:48:07 【问题描述】:

我需要将一个 CGRect 从一个 UIImage 转换为另一个调整大小的 UIImage。

例如,如果图像 A(原始)大小 = 100,100,矩形为 50,50,50,50

in A'(destination) size = 50,50需要将rect'(destination rect)转换为25,25,25,25

想知道是否有可以为我做的功能?目前只是转换坐标系,但将来可能会旋转矩形,并且可能涉及一些复杂的三角函数 - 想保存它。

编辑: 添加图像来解释问题

【问题讨论】:

【参考方案1】:

当然有一些助手可以使用。

CGAffineTransform 是您正在寻找的,例如:

CGAffineTransform transform1 = CGAffineTransformMakeTranslation(-50, -50);
CGAffineTransform transform2 = CGAffineTransformMakeRotation(M_PI/2);
CGRect myRect = CGRectMake(100,100,100,100);
CGRect transformedRect = CGRectApplyAffineTransform(myRect, transform1);

查看 CGAffineTransform.h 以获取完整列表。

【讨论】:

是以像素为单位的目标矩形的翻译(我的意思是矩形中的差异) 它在 x,y 坐标中 :) 这不是真正的“像素”。无论您使用什么单位 - 它们都将保持不变。 好的,我试试看。谢谢 为了清楚起见,翻译是以像素 (x,y) 为单位的偏移量,这意味着如果我的原始矩形在新系统中为 50,50,200,200,其中包含的矩形减少了 a, b 该系统中原始矩形的像素为 CGAffineTransform transform1 = CGAffineTransformMakeTranslation(-a, -b); CGRect transformRect = CGRectApplyAffineTransform(myRect, transform1); 我想你更多的是寻找 CGAffineTransformMakeScale(xScale, yScale)。其中比例对应于 A'x / Ax 和 A'y / Ay。如果我从您的示例中正确理解了您要做什么:)

以上是关于将反应从一个系统转换为另一个系统的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何将日期时间/时间戳从一个时区转换为另一个时区?

将 stdClass 对象转换/转换为另一个类

PHP 将时间从一个时区转换为另一个时区

将对象列表转换为另一个对象

如何将对象从一个 JpaRepository 转换为另一个 JpaRepository

Spark:scala - 如何将集合从 RDD 转换为另一个 RDD