1

私は自分の iPhone 4 で見事に動作するプログラムを持っています。私が作成したクラス UIView (TestView と呼ばれます) を使用して、Quartz を使用してグラフィックを描画します (ほんの数本の CG 線と円などの非常に単純なグラフィック)。ただし、iPhone 4 の新しい高解像度画面を利用する必要があります。現在、iPhone 3 との後方互換性を確保するために、コード内で単一の「ポイント」を移動すると、iPhone 4 画面上で 2 ピクセルの移動が発生します。 . UIView を 2.0 のスケール ファクターに更新することにより、マッピングを論理座標空間からピクセル空間に変更して、iPhone 4 のより高い解像度を利用できます。簡単なはずです。UIView 倍率を変更する方法に関するドキュメントが見つかりません。

たとえば、関数 CGContextSetLineWidth(context, 1.0); で指定する必要がある線を描画します。2 ピクセル幅の線を描画することになります。実際に 1 ピクセル幅で描画するには、これを変更する必要があります。

説明はありますが、高解像度画面のサポートに関する Apple の説明にスケール係数を変更する例や方法はありません。

http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/SupportingResolutionIndependence/SupportingResolutionIndependence.html#//apple_ref/doc/uid/TP40007072-CH10-SW12

UIView ドキ​​ュメントは contentScaleFactor 属性を提供しますが、「設定」メソッドは提供しません。以下の行を ttp:// から http:// に変更して、URL に変換します。

ttp://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/cl/UIView

4

1 に答える 1

1

OK、iPhone 4 はすべての UIView をスケール ファクター 2 で自動的に作成するのに十分です。より根本的な問題は、CG が異常な方法で線をレンダリングすることです (私が知る限り)。線幅を 1.0/contentScaleFactor (つまり、iPhone 4 の場合は 0.5) にして、線を上下にまっすぐ (または左右にまっすぐ) 引くと、半分の確率で幅 1 の完璧な明るい線になります。ピクセル。しかし、残りの半分の時間は、これを幅 2 ピクセルの線としてレンダリングし、ピクセルの両方の線を半分だけ点灯させます。これは、複雑なコンテキスト、特に動きを伴うコンテキストでは良さそうに見えますが、1 行だけを調べている場合は非常に煩わしいものです。

単一の行でこれを回避するためのハックは、座標を半分の値で「揺らす」ことです。したがって、(0,0) から (0,10) まで描画して「倍幅」の線が得られる場合は、(0.5, 0) から (0.5, 10) まで描画してみてください。

于 2010-07-23T15:20:23.307 に答える