gpt4 book ai didi

objective-c - 向我的矩形添加一条曲线

转载 作者:搜寻专家 更新时间:2023-10-30 19:59:37 25 4
gpt4 key购买 nike

我正尝试在 Objective-c 中绘制阴阳,但我不知道该怎么做。我创建了两个相连的矩形。我无法弄清楚如何制作我的矩形曲线的线条,以便我可以用它们制作一个圆圈。到目前为止,这是我的代码。

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextAddRect(context, CGRectMake(60, 150, 80, 10));
CGContextStrokePath(context);

CGContextAddRect(context, CGRectMake(60, 150, 190, 10));
CGContextStrokePath(context);

在 Objective-C 中是否有更简单的方法来创建阴阳,或者我的方向是否正确?我是 objective-c 和一般编程的新手。

最佳答案

我建议使用圆弧(实际上是一系列半圆)代替圆角矩形。例如,将一部分视为三个独立的半圆:

yin yang strokes

然后您可以像这样绘制这些弧线:

CGContextAddArc(context, center.x, center.y - side / 4.0, side / 4.0, M_PI_2, -M_PI_2, TRUE); // red part
CGContextAddArc(context, center.x, center.y + side / 4.0, side / 4.0, M_PI_2, -M_PI_2, NO); // blue part
CGContextAddArc(context, center.x, center.y, side / 2.0, -M_PI_2, M_PI_2, YES); // dark grey stroke

但显然,您可能不会实际绘制这些笔划,而只是将它们填满,然后对符号的底部重复此过程:

- (void)drawRect:(CGRect)rect {
CGFloat side = MIN(rect.size.width, rect.size.height); // length of the side of the square in which the symbol will rest
CGPoint center = CGPointMake(rect.size.width / 2.0, rect.size.height / 2.0); // the center of that square

CGContextRef context = UIGraphicsGetCurrentContext();

// draw white part

CGContextAddArc(context, center.x, center.y - side / 4.0, side / 4.0, M_PI_2, -M_PI_2, TRUE);
CGContextAddArc(context, center.x, center.y + side / 4.0, side / 4.0, M_PI_2, -M_PI_2, NO);
CGContextAddArc(context, center.x, center.y, side / 2.0, -M_PI_2, M_PI_2, YES);
CGContextClosePath(context);

CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillPath(context);

// draw black part

CGContextAddArc(context, center.x, center.y - side / 4.0, side / 4.0, M_PI_2, -M_PI_2, TRUE);
CGContextAddArc(context, center.x, center.y + side / 4.0, side / 4.0, M_PI_2, -M_PI_2, NO);
CGContextAddArc(context, center.x, center.y, side / 2.0, -M_PI_2, M_PI_2, NO);
CGContextClosePath(context);

CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
CGContextFillPath(context);

// draw black dot

CGContextAddArc(context, center.x, center.y - side / 4.0, side / 12.0, 0, M_PI * 2.0, YES);
CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
CGContextFillPath(context);

// draw white dot

CGContextAddArc(context, center.x, center.y + side / 4.0, side / 12.0, 0, M_PI * 2.0, YES);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillPath(context);
}

产生:

yin yang

关于objective-c - 向我的矩形添加一条曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127332/

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