変更された CGMutablePathRef を含む CGContext をどのようにシリアル化しますか?
現在、コンテキストを png 表現に保存してシリアル化していますが、Retina ディスプレイで問題が発生しています。
Retina バージョンをシリアル化し、実行時にサイズを変更することは非効率的であるため、避けたいと思います。
変更された CGMutablePathRef を含む CGContext をどのようにシリアル化しますか?
現在、コンテキストを png 表現に保存してシリアル化していますが、Retina ディスプレイで問題が発生しています。
Retina バージョンをシリアル化し、実行時にサイズを変更することは非効率的であるため、避けたいと思います。
単一のパスをストロークまたは塗りつぶすだけの場合は、プロトコルにUIBezierPath
準拠する でラップしてから、次をシリアル化できます。NSCoding
UIBezierPath
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 に記録します。後で、CGPDFDocument
PDF の を作成し、それを使用して PDF をビットマップ コンテキストに描画できます。詳細については、* Quartz 2D Programming Guide* の PDF ドキュメントの作成、表示、および変換の章をお読みください。