CGRectApplyAffineTransform什么都没做?

时间:2012-06-05 18:30:14

标签: objective-c ios cgaffinetransform

我是CGAffine世界的新手。任何人都知道为什么我的转换不起作用/采取?

  1. 我有一个使用UIGraphicsBeginPDFContextToData和以下当前矩阵创建的有效PDFContext:

    CGAffineTransform curMat = CGContextGetCTM(context);
    NSLog (@"current context matrix: %f %f %f %f %f %f", curMat.a, curMat.b, curMat.c, curMat.d, curMat.tx, curMat.ty);
    
  2. NSLog值:

    当前矩阵:1.000000 0.000000 -0.000000 -1.000000 0.000000 792.000000

  3. 我用:

    创建转换矩阵
    CGAffineTransform xform = CGAffineTransformMake(a, b, c, d, tx, ty);
    
  4. NSLog值:

    变换矩阵:0.062500 0.000000 0.000000 0.062500 0.000000 0.000000

  5. 我得到了我的直肠:

    CGRect pdfBounds = UIGraphicsGetPDFContextBounds();
    
  6. NSLog值:

    pdfBounds:0.000000 0.000000 612.000000 792.000000

  7. 我将转换矩阵应用于:

     CGRectApplyAffineTransform (pdfBounds, xform);
    
  8. 然后我用以下方法重新检查当前的矩阵值:

    CGAffineTransform curMat2 = CGContextGetCTM(context);
    NSLog (@"current context matrix after transformation: %f %f %f %f %f %f", curMat2.a, curMat2.b, curMat2.c, curMat2.d, curMat2.tx, curMat2.ty)
    
  9. 并且NSLog值与开头时的值相同。

    转换后的当前上下文矩阵:1.000000 0.000000 -0.000000 -1.000000 0.000000 792.000000

  10. 我错过了什么?为什么转型没有发生/采取?谢谢。

1 个答案:

答案 0 :(得分:1)

您忽略了应用转换的结果,并且您也没有对上下文应用任何转换。

第7步应该是:

CGContextConcatCTM(context, xform);