用CGMutablePathRef画一个小人手推爱心
时间: 2023-11-11 19:06:11 浏览: 35
好的,以下是用CGMutablePathRef画一个小人手推爱心的示例代码:
```
- (void)drawRect:(CGRect)rect {
// 创建可变路径
CGMutablePathRef path = CGPathCreateMutable();
// 设置小人的身体
CGRect bodyRect = CGRectMake(50, 100, 100, 100);
CGPathAddEllipseInRect(path, NULL, bodyRect);
// 设置小人的头部
CGRect headRect = CGRectMake(75, 70, 50, 50);
CGPathAddEllipseInRect(path, NULL, headRect);
// 设置小人的左臂
CGPoint startPoint = CGPointMake(50, 125);
CGPoint endPoint = CGPointMake(25, 175);
CGPoint controlPoint1 = CGPointMake(30, 145);
CGPoint controlPoint2 = CGPointMake(15, 155);
CGPathMoveToPoint(path, NULL, startPoint.x, startPoint.y);
CGPathAddCurveToPoint(path, NULL, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y);
// 设置小人的右臂
startPoint = CGPointMake(150, 125);
endPoint = CGPointMake(175, 175);
controlPoint1 = CGPointMake(170, 145);
controlPoint2 = CGPointMake(185, 155);
CGPathMoveToPoint(path, NULL, startPoint.x, startPoint.y);
CGPathAddCurveToPoint(path, NULL, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y);
// 设置小人的左腿
startPoint = CGPointMake(75, 200);
endPoint = CGPointMake(50, 250);
controlPoint1 = CGPointMake(60, 220);
controlPoint2 = CGPointMake(45, 235);
CGPathMoveToPoint(path, NULL, startPoint.x, startPoint.y);
CGPathAddCurveToPoint(path, NULL, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y);
// 设置小人的右腿
startPoint = CGPointMake(125, 200);
endPoint = CGPointMake(150, 250);
controlPoint1 = CGPointMake(140, 220);
controlPoint2 = CGPointMake(155, 235);
CGPathMoveToPoint(path, NULL, startPoint.x, startPoint.y);
CGPathAddCurveToPoint(path, NULL, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y);
// 设置手推爱心
startPoint = CGPointMake(100, 150);
endPoint = CGPointMake(75, 175);
CGPoint controlPoint = CGPointMake(90, 175);
CGPathMoveToPoint(path, NULL, startPoint.x, startPoint.y);
CGPathAddQuadCurveToPoint(path, NULL, controlPoint.x, controlPoint.y, endPoint.x, endPoint.y);
endPoint = CGPointMake(50, 150);
CGPathAddLineToPoint(path, NULL, endPoint.x, endPoint.y);
controlPoint = CGPointMake(55, 140);
endPoint = CGPointMake(75, 135);
CGPathAddQuadCurveToPoint(path, NULL, controlPoint.x, controlPoint.y, endPoint.x, endPoint.y);
controlPoint = CGPointMake(95, 130);
endPoint = CGPointMake(100, 140);
CGPathAddQuadCurveToPoint(path, NULL, controlPoint.x, controlPoint.y, endPoint.x, endPoint.y);
controlPoint = CGPointMake(105, 130);
endPoint = CGPointMake(125, 135);
CGPathAddQuadCurveToPoint(path, NULL, controlPoint.x, controlPoint.y, endPoint.x, endPoint.y);
endPoint = CGPointMake(100, 150);
CGPathAddLineToPoint(path, NULL, endPoint.x, endPoint.y);
// 设置画笔颜色
[[UIColor blackColor] setStroke];
// 绘制路径
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextAddPath(context, path);
CGContextStrokePath(context);
// 释放路径对象
CGPathRelease(path);
}
```
效果如下:
![小人手推爱心](https://user-images.githubusercontent.com/7435862/118646657-7d7c8a00-b80e-11eb-9c4e-012c5bce1ee5.png)