変更された CGMutablePathRef を含む CGContext をどのようにシリアル化しますか?
現在、コンテキストを png 表現に保存してシリアル化していますが、Retina ディスプレイで問題が発生しています。
Retina バージョンをシリアル化し、実行時にサイズを変更することは非効率的であるため、避けたいと思います。
変更された CGMutablePathRef を含む CGContext をどのようにシリアル化しますか?
現在、コンテキストを png 表現に保存してシリアル化していますが、Retina ディスプレイで問題が発生しています。
Retina バージョンをシリアル化し、実行時にサイズを変更することは非効率的であるため、避けたいと思います。
単一のパスをストロークまたは塗りつぶすだけの場合は、プロトコルにUIBezierPath準拠する でラップしてから、次をシリアル化できます。NSCodingUIBezierPath
UIBezierPath *uiPath = [UIBezierPath bezierPathWithCGPath:cgPath];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:uiPath];
次にdata、ファイルやデータベースなどに書き込むことができます。後で a に変換dataしUIBezierPath、次に aに変換できCGPathます。
UIBezierPath *uiPath = [NSKeyedUnarchiver unarchiveObjectWithData:data];
CGPathRef cgPath = uiPath.CGPath;
単一のパスよりも複雑なものを描画している場合、描画をスケーラブル (ベクター) 形式でシリアル化する最も簡単な方法は、CGPDFContextではなく に描画することCGBitmapContextです。CGPDFContextは、描画コマンドを PDF に記録します。後で、CGPDFDocumentPDF の を作成し、それを使用して PDF をビットマップ コンテキストに描画できます。詳細については、* Quartz 2D Programming Guide* の PDF ドキュメントの作成、表示、および変換の章をお読みください。