2

このコードは、iPhone(Retina 4インチ)に設定されたエミュレーターで実行しています。

-(void)drawRect:(CGRect)rect {
    [[UIColor whiteColor]set];
    UIRectFill(self.bounds);
    UIBezierPath *vertLine = [UIBezierPath bezierPath];
    [vertLine moveToPoint:CGPointMake(20.5, 10.0)];
    [vertLine addLineToPoint:CGPointMake(20.5, 20.0)];
    vertLine.lineWidth = 1.0;
    [[UIColor blackColor]set];
    [vertLine stroke];
}

縦に1ピクセルの線があると思いますが、線の幅は2ピクセルで、黒一色です。黒一色は、これがピクセルグリッド上の線の配置の問題によるものではないことを示唆しているようです(この場合は50%の灰色になります)

ここで何が起こっているのですか?

4

1 に答える 1

3

UIKit の場合、ピクセルではなくポイントを指定します。ポイントは自動的にピクセルにマッピングされます。あなたの 1-point-width-line は、2 つの網膜ピクセルにマッピングされているようです。

http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.htmlの「ポイントとピクセル」を参照してください。

于 2012-11-14T10:14:45.003 に答える