技術的には、x、y、幅、および高さは、ピクセルに関連する一連の寸法を表します。200.23422 ピクセルを使用できないのに、なぜ int ではなく float を使用するのですか?
3 に答える
浮動小数点数の理由は、最新の CPU と GPU が多くの浮動小数点数を並行して処理するように最適化されているためです。これは iOS だけでなく Mac にも当てはまります。
Quartz を使用すると、個々のピクセルに対処する必要はありませんが、描画するものはすべて常にアンチエイリアス処理されます。座標が 1.0、1.0 の場合、実際には座標原点の 2x2 ピクセルに色が追加されます。
これが、整数座標で描画すると線がぼやける理由です。非網膜では、オフセットを 0.5 ずつ描画する必要があります。技術的には、Retina ディスプレイで正確なピクセルを描画するには、0.25 オフセットする必要があります。ただし、そのピクセルサイズでは実際には表示されないため、それほど重要ではありません.
簡単に言うと、ピクセルを直接アドレス指定することはありませんが、グラフィックス エンジンが浮動小数点座標とピクセルの間をマッピングします。
解像度の独立性。
UI の数学的表現を可能な限り正確に保ち、実際に出力デバイスに描画する必要がある場合にのみピクセル int 値に変換する必要があります (その場合でも、実際にはそうではありません)。これは、ビューに任意の数の変換を適用しても、正確な結果を得ることができるようにするためです。
さらに、たとえば半ピクセル幅またはそれ以下の幅で線をレンダリングして、目に見える結果を得ることができます。システムは、インテリジェントなアンチエイリアシングを使用して細い線を表示します。
これは、ベクター描画が何十年にもわたって使用してきた原則と同じです (Adobe の PostScript、SVG など)。実際、Quartz は PostScript の最新バージョンである PDF に基づいています。NeXT は当時 Display PostScript を使用していましたが、これは非常に革新的であると考えられていました。
寸法は、実際には、非 Retina スクリーンではピクセルに対して 1 対 1 の関係を持つポイントですが、Retina スクリーンでは 1 ポイント = 2 ピクセルです。したがって、Retina スクリーンでは、実際には 0.5 ポイントずつインクリメントできます。