1
CGContextRef currentContext = UIGraphicsGetCurrentContext();

CGContextSetStrokeColorWithColor(currentContext, hh2DarkGray.CGColor);
CGFloat lengths[] = {0, 8};
CGContextSetLineCap(currentContext, kCGLineCapRound);
CGContextSetLineWidth(currentContext, 1);
CGContextSetLineDash(currentContext, 0.0f, lengths, 2);

CGContextBeginPath(currentContext);
CGContextMoveToPoint(currentContext, x1, y1);
CGContextAddLineToPoint(currentContext, x2, y2);

CGContextClosePath(currentContext);
CGContextDrawPath(currentContext, kCGPathStroke);

ドットが均等に配置されないようにする上記のコードで何が間違っていますか? このように見えます。

. .. .. .. .. .. .. .. . このように見える必要があるとき。. . . . . . . . . . . . . .

私は完全に道に迷っており、見つけることができる他のすべての投稿は、この種の問題を指摘していません。助けてください?

4

2 に答える 2

0

0.5ラインの座標に追加してみてください:

CGContextMoveToPoint(currentContext, x1 + 0.5, y1 + 0.5);
CGContextAddLineToPoint(currentContext, x2 + 0.5, y2 + 0.5);

ピクセル インデックスではなく、論理座標で考える必要があります。ピクセル パーフェクトな線を描画する場合は、いくつかのピクセルの中心の座標を渡す必要があります。そうしないと、丸めアーティファクトが発生します。

于 2013-05-14T15:24:18.800 に答える