gpt4 book ai didi

ios - 填充后无法描边路径

转载 作者:IT王子 更新时间:2023-10-29 08:17:05 25 4
gpt4 key购买 nike

下面的代码很好地创建了一个由 CGRect (rectRect) 定义的圆角矩形。

填充良好,但我没有中风。为什么我看不到中风有什么想法吗?

-(void)drawRect:(CGRect)rect {

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGContextSetRGBFillColor(ctx, 0, 0, 0, 0.4);
CGContextSetRGBStrokeColor(ctx, 1, 1, 1, 1);
CGContextSetLineWidth(ctx, 4.0);

float fw, fh;
rect = rectRect;
float ovalWidth = 12;
float ovalHeight = 12;

if (ovalWidth == 0 || ovalHeight == 0) {
CGContextAddRect(ctx, rect);
return;
}

CGContextTranslateCTM (ctx, CGRectGetMinX(rect), CGRectGetMinY(rect));
CGContextScaleCTM (ctx, ovalWidth, ovalHeight);
fw = CGRectGetWidth (rect) / ovalWidth;
fh = CGRectGetHeight (rect) / ovalHeight;
CGContextMoveToPoint(ctx, fw, fh/2);
CGContextAddArcToPoint(ctx, fw, fh, fw/2, fh, 1);
CGContextAddArcToPoint(ctx, 0, fh, 0, fh/2, 1);
CGContextAddArcToPoint(ctx, 0, 0, fw/2, 0, 1);
CGContextAddArcToPoint(ctx, fw, 0, fw, fh/2, 1);
CGContextClosePath(ctx);

CGContextFillPath(ctx);
CGContextStrokePath(ctx);

}

最佳答案

当您通过描边或填充路径绘制路径时,图形上下文会将其路径重置为空。因此,在您调用 CGContextFillPath 之后,上下文没有描边路径。

您可以使用 CGContextDrawPath 函数在一次调用中完成这两项操作,而不是尝试填充路径然后对其进行描边:

CGContextDrawPath(ctx, kCGPathFillStroke);

kCGPathFillStroke 常量告诉 Core Graphics 填充路径然后描边。

另一方面,您可以使用 UIBezierPathUIColor 来大幅减少代码量:

-(void)drawRect:(CGRect)rect {
[[UIColor colorWithWhite:0 alpha:0.4] setFill];
[[UIColor whiteColor] setStroke];

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rectRect cornerRadius:12];
path.lineWidth = 4;
[path fill];
[path stroke];
}

关于ios - 填充后无法描边路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13526046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com