2

私は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

何が欠けていますか?変換が行われない/行われないのはなぜですか? ありがとうございました。

4

1 に答える 1

1

適用された変換の結果を無視しており、コンテキストに変換を適用していません。

ステップ 7 は次のようになります。

CGContextConcatCTM(context, xform);
于 2012-06-05T18:42:15.680 に答える