如何确定通过Core Graphics绘制的正方形中每个像素的位置?

-1 iphone cocoa cocoa-touch core-graphics

我试图得到使用Core图形绘制的Square的每个像素点.在这里,通过使笔触颜色为黑色,我正在绘制Square.Please让我知道如何获得绘制此正方形的所有像素点.

- (void)drawRect:(CGRect)rect 
{
    CGMutablePathRef path = CGPathCreateMutable(); 
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    CGPathMoveToPoint(path, NULL, 30.0f, 30.0f);
    CGPathAddLineToPoint(path, NULL, 130.0f, 30.0f);
    CGPathAddLineToPoint(path, NULL, 130.0f, 130.0f);
    CGPathAddLineToPoint(path, NULL, 30.0f, 130.0f);
    CGPathCloseSubpath(path);
    CGPathRetain(path);
    CGContextSetFillColorWithColor(ctx, [UIColor clearColor].CGColor); 
    CGContextSetStrokeColorWithColor(ctx,[UIColor blackColor].CGColor);
    CGContextSetLineWidth(ctx, 2.0);
    CGContextSaveGState(ctx);
    CGContextAddPath(ctx, path); 

    CGContextRestoreGState(ctx);
    CGContextStrokePath(ctx);
    CGContextRestoreGState(ctx);

    CGContextRestoreGState(ctx);
    [self setNeedsDisplay];
    CGPathRelease(path);
}
Run Code Online (Sandbox Code Playgroud)

NSR*_*der 5

你为什么要做所有这些工作,而不仅仅是使用CGContextFillRect()CGContextStrokeRect()

您上面的代码可以简化为:

CGRect r = CGRectMake(30.0, 30.0, 100.0, 100.0);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(ctx, CGColorGetConstantColor(kCGColorClear));
CGContextFillRect(ctx, r);
CGContextSetLineWidth(ctx, 2.0);
CGContextSetStrokeColorWithColor(ctx, CGColorGetConstantColor(kCGColorBlack));
CGContextStrokeRect(ctx, r);
Run Code Online (Sandbox Code Playgroud)

此外,永远不要-setNeedsDisplay在您的-drawRect:方法中发送.你会得到一个无限循环.