objective-c - CGRectApplyAffineTransform 什么都不做?

标签 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. 我的 rect 来自:

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

    pdf范围: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

我错过了什么?为什么转变没有发生/发生?谢谢。

最佳答案

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

第 7 步应该是:

CGContextConcatCTM(context, xform);

关于objective-c - CGRectApplyAffineTransform 什么都不做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10902818/

相关文章:

objective-c - iOS 8 中的自定义 UITableViewCells 和 layoutMargin

ios - 半透明的 UINavigationBar

ios - Swift CGAffineTransform 旋转跳跃

ios - 无法构建包含 Objective-C Tesseract 库的 Swift 应用程序

objective-c - macOS:setNeedsDisplayInRect 导致的内存消耗

ios - 在 iOS 上使用音频单元混合多个信号

ios - 从代码中获取 xcconfig 配置文件名

ios - 将 UIView 旋转 360 度或更多

ios - 为什么动画组合比例和翻译 CGAffineTransform 不能简单地工作?

objective-c - NSTableView 下降焦点颜色