代码之家  ›  专栏  ›  技术社区  ›  christo16

在iPhone和CA平面之间转换CGPoint

  •  0
  • christo16  · 技术社区  · 14 年前

    我有一个UIView子类,我正在上面绘制PDF(使用CATiledLayer)。我还需要在PDF的一个特定区域上绘制,但是当使用CG绘制时,CATiledLayer的坐标平面有点扭曲。

    alt text

    我有一个点(200200),我需要转换成CATiledLayer的坐标系,这是上面显示的第二个平面。我试过用一些变换来实现这一点,但似乎没有任何效果。

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  0
  •   christo16    14 年前

    下面是我必须做的(使用上面的示例点/平面):

    //rotatation origin
    CGPoint rotateOrigin = CGPointMake(0,0);
    //rotatation transform
    CGAffineTransform translateTransform = CGAffineTransformMakeTranslation(rotateOrigin.x, rotateOrigin.y);
    //rotate the plane 90 degrees
    float radians = 90 * (M_PI / 180);
    CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(radians);   CGAffineTransform customRotation = CGAffineTransformConcat(CGAffineTransformConcat( CGAffineTransformInvert(translateTransform), rotationTransform), translateTransform);
    
    CGAffineTransform m1 =  CGAffineTransformIdentity;
    CGPoint startPoint = CGPointApplyAffineTransform(CGPointMake(200,200),m1);   
    //rotated point
    CGPoint rotatedPoint = CGPointApplyAffineTransform(startPoint, customRotation);
    //final rotated point- after adjusting for the rotation
    rotatedPoint = CGPointApplyAffineTransform(rotatedPoint, CGAffineTransformMakeTranslation(500,-500));