将 CGrect 值更改为用户坐标系

Posted

技术标签:

【中文标题】将 CGrect 值更改为用户坐标系【英文标题】:Changing CGrect value to user coordinate system 【发布时间】:2011-03-30 06:10:48 【问题描述】:

我有一个CGRect;我可以将其坐标转移到用户坐标系中,即左下角到顶部而不是左上角到底部。是否有任何预定义的方法或者我需要手动计算它?提前致谢。

【问题讨论】:

答案取决于您对转换后的 CGRect 的使用情况。你打算如何处理转换后的矩形? 我在默认坐标系(用户)中有一个直线矩形值,现在我想要 iphone 使用坐标系中的坐标。 所以你在坐标系中有一个矩形,原点在左下角,你想把它转换成ios坐标系吗?您能否发布一个默认坐标系中的矩形示例? 我的矩形原点(60,344.32)宽41.35高10.08 【参考方案1】:

要将矩形从原点位于左下角的坐标系(我们称之为传统坐标系来命名)转换为原点位于左上角的系统(iPhone 坐标系),您需要知道CGRect 所在的视图的大小,因为视图是矩形的参考。

例如,假设您有一个大小为 200 x 300 的视图,而您的 CGRectCGRectMake(10, 20, 30, 40)CGRect 的大小将保持不变。会改变的只是原点——实际上,只有 y 坐标会改变,x 坐标不会改变,因为传统和 iPhone 坐标系都从左侧开始(一个在左下角;另一个在左上角)。

所以我们会有类似CGRectMake(10, y, 30, 40).

  - (CGRect)rectangle:(CGRect)oldRect fromTraditionalToiPhoneCoordinatesWithReferenceViewOfSize:(CGSize)aSize
     
      CGFloat oldY = oldRect.origin.y;  // This is the old y measured from the bottom left. 
      CGFloat newY = aSize.height - oldY - oldRect.size.height;

      CGRect newRect = oldRect;
      newRect.origin.y = newY;

      return newRect;
     
    

从 iPhone(左上角)坐标系测量的新矩形将是:CGRectMake(10, 300 - 20 - 40, 30, 40) = CGRectMake(10, 240, 30, 40)

希望这张图片能让它更清晰

【讨论】:

以上是关于将 CGrect 值更改为用户坐标系的主要内容,如果未能解决你的问题,请参考以下文章

检查用户 ID 是不是在 mongoose 文档中 - 如果是,将属性值更改为 true?

检查用户 ID 是不是在 mongoose 文档中 - 如果是,将属性值更改为 true?

将坐标 lat 和 long 更改为 andress

图表中的坐标轴数值怎么将百分数改为整数?

我将如何从接触点获取最低和最高坐标数?

将 xlim 更改为 ggsurvplot 中的笛卡尔坐标