2012-04-12 6 views
1

私はこの記事のようにCore Animation Layersを持つ "marching ants"選択フレームを作成しています:MARCHING ANTS WITH CORE ANIMATION。 しかし私が気に入らないのは、CAShapeLayerの行の幅だけです。幅はちょうど1pxにする必要がありますが、アンチエイリアスのため、線の幅は約2ピクセルで少し透明です。CAShapeLayerアンチエイリアスを無効にする

アンチエイリアスをオフにする方法はありますか?あなたはアンチエイリアスで立ち往生しているよう

答えて

3

は、ドキュメントに基づいて、それが見えます:

CAShapeLayerクラスは、その座標 空間での立方ベジェスプラインを描画します。図形は、レイヤの内容と最初のサブレイヤの の間で合成されます。形状が描画される

をアンチエイリアス、それがあろう可能な限り 解像度の独立性を維持するためにラスタライズされる前に、画面空間にマッピング。ただし、CoreImageフィルタなどの特定の種類の画像処理 操作は、レイヤに適用されるか、先祖の 先祖がローカル座標空間で強制的にラスタライズされることがあります。

5

私は同じ問題を抱えていましたが、幸いにも、もう少し歩き回り、CGContextSetShouldAntialias(GCContextRef、BOOL)関数が見つかりました。アンチエイリアスはグラフィックスコンテキストで起こっていたことが判明しました。

私はCALayerレンダリングの下で​​ビットマップコンテキストに一連のシェイプレイヤーでこれをテストしました。 デフォルトでは、100〜130(ビットマップ値)の範囲で設定した値と低い数値の束を得ました。 CGContextSetShouldAlias(context、NO)を設定した後、私は自分の値を得ました。

+0

メソッド名が間違っていますが( "CGContextSetShouldAntialias"にする必要があります)、これを追加すると、アプリでパフォーマンスが15%向上しました - ありがとう! – Adam

関連する問題