0

私はCGContextの世界に不慣れです。NSMutableArray に CGContext のスタックを作成する必要があります。

  1. UIGraphicsBeginPDFContextToData で作成された有効な PDFContext があります

  2. このコンテキストを引数としてメソッドに渡しています

    -(void) drawTo:(CGContextRef) context{}

  3. まず、現在のコンテキストを次のように識別します。

    CGContextRef curCon = context;

  4. NSLog 値:

    context:<CGContext 0x6b79d60>

  5. 次に、現在のコンテキストのコピーを作成しようとします。

    CGContextRef conCopy = UIGraphicsGetCurrentContext();

  6. 次に、それを NSMutableArray に追加します。

    [myMutableArray* addObject:(id)conCopy];

  7. 次に、NSMutableArray の内容をリストします。

    after an object added:<__NSArrayM 0x6b7e850>(<CGContext 0x6b79d60>)

そして、追加された値は、コピーではなく、引数としてこのメ​​ソッドに最初に送信されたものと同じコンテキストであることがわかります。

ここで何が欠けていますか? それとも、現在のコンテキストのステータスを NSMutableArray に保存できないのでしょうか? パスが保存されないことは理解していますが、それで問題ありません。保存できる現在のコンテキストに関するあらゆるものを保存する必要があります。ありがとうございました!

4

2 に答える 2

2

これを直接行うことはできません。しかし、あなたが解決しようとしている本当の問題は何ですか?CGContextSaveGState()あなたが求めていることを行いますが、現在のコンテキストの範囲内でのみです。CGLayer持ち運ぶことができるコンテキストを効果的に作成できます (ただし、それらをシリアル化することはできません)。

CGContextGet...本当の目的がパス以外の状態をコピー可能な形式で保存することである場合、すべてのメソッドを呼び出してその結果を保存することにより、コピー可能なオブジェクトを作成できます。次にCGContextSet...、それらを呼び出して新しいコンテキストを作成できます。面倒ですが、難しくはないはずです。(それはなぜかという疑問を提起しますが、それは非常に奇妙なことのように感じます。)

于 2012-06-06T00:26:11.997 に答える
0

UIGraphicsGetCurrentContextコピーを作成しません。返されるコンテキストは、 を使用して作成したものですUIGraphicsBeginPDFContextToData

于 2012-06-05T19:26:53.123 に答える