0

drawRect の NSView サブクラスで、多数の NSBezierPath をストロークします。これらのストロークの結果として描画される線は、ビューのスケーリングに関係なく、できれば数ピクセル幅でまったく同じになるようにしたいと思います。これが私の drawRect です:

- (void)drawRect:(NSRect)dirtyRect
{
    NSSize x = [self convertSize:NSMakeSize(1,1) fromView:nil];
    printf("size = %f %f\n", x.width, x.height);
    for(NSBezierPath *path in self.paths) {
        [path setLineWidth:x.width];
        [path stroke];
    }
}

これが私が見ているもののスクリーンショットです:

スクリーンショット
(出典: crb at www.sonic.net )

私が探している鮮明で一貫したパスのアウトラインを取得する方法を誰かが提案できますか?

ありがとう。

4

1 に答える 1

1

デバイスの正確なピクセルと一致するようにしてください。(iPhone 5以降は難しくなっています)

0.5 のように、半分のポイントで座標を使用しないでください (網膜上で動作しますが、「非網膜」ではシャープではありません)。

線幅は、左半分/または上半分、右半分になります。

したがって、lineWidth が 2 で、整数値で座標を設定している場合、シャープになるはずです。

于 2013-02-15T16:54:07.910 に答える