6

1行で境界線のある長方形を描くにはどうすればよいですか?

次のような個別の方法があります。

CGContextStrokeRect(context, someRectangle);

CGContextFillRect(context, someRectangle);

しかし、両方を1つにできるものはありますか?

4

3 に答える 3

9
- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGPathRef path = CGPathCreateWithRect(rect, NULL);
    [[UIColor redColor] setFill];
    [[UIColor greenColor] setStroke];
    CGContextAddPath(context, path);
    CGContextDrawPath(context, kCGPathFillStroke);
    CGPathRelease(path);
}

ただし、別々の呼び出しでストロークとフィルよりも冗長であるとは言えません...

于 2012-12-04T19:30:09.040 に答える
6

行スペースを節約するだけの場合は、独自のメソッドを定義して 2 つの呼び出しを行い、それをユーティリティ クラスに配置できます。

void strokeAndFill(CGContextRef c, CGRect rect)
{
    CGContextFillRect(c, rect);
    CGContextStrokeRect(c, rect);
}
于 2012-12-04T19:44:59.900 に答える
-1

CGContextDrawPath は、事前に塗りと線の色を設定しておけば、一度に実行されます。

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColor(context, a);
CGContextSetFillColor(context, b);
CGContextDrawPath(context, rect)
于 2012-12-04T19:17:32.650 に答える