私のプロセスは次のようになります。
- ポイント次元を使用して、描画する長方形を定義します。
- 定義
CGFloat scale = [[UIScreen mainsScreen] scale]
- 長方形のサイズにスケールを掛けます
- を使用して長方形サイズの画像コンテキストを作成します
CGBitmapContextCreate
- 画像コンテキスト内で描画する
- 電話
CGBitmapContextCreateImage
- call
UIImage imageWithCGImage:scale:orientation
: 適切なスケールで。
これにより、網膜と古い画面の両方で常に完璧な画像が得られると思っていましたが、線のコントラスト/太さに細心の注意を払っていませんでした. 一般的に、ストロークは塗りとのコントラストが高いため、今まで気にしていなかった線と塗りのコントラストが低くなっています。
おそらくユーザー空間を誤解していると思いますが、スケーリングと変換による単純な直接変換だと思いました。私の特定のケースでは、網膜スクリーンのダブルスケーリングを除いて、スケーリングと変換は適用されません。
1 ピクセルではなく 2 ピクセルの線をレンダリングしようとする方が簡単に説明でき
UIContextSetLineWidth(context, 2)
ます。1ピクセル!ただし、Retina ディスプレイでは、これは 2 ピクセルである必要があります。
UIContextSetLineWidth(context, 2 * scale)
Retina 画面では 2 ピクセル幅の線が生成されますが、4 ピクセルになると予想しています。
UIContextSetLineWidth(context, 1)
部分的に透明な 1 ピクセル幅の線を生成します。ストロークがパスにまたがっていることは理解しているので、2 ピクセル幅のストロークと、パスがピクセル境界上にあるという観点で話すことを好みます。
レンダリングされた線幅が半分に分割されている理由を理解する必要があります。