我的iPhone应用程序中有代码在UIView中绘制饼图。一切都很棒,但我需要能够使用类似粉笔的纹理来绘制轮廓,然后填充饼图的不同颜色。
以下是每个区域现有代码的摘录:
在饼图周围绘制圆圈:
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextSetLineWidth(ctx, 8.0);
// Draw a thin line around the circle
CGContextAddArc(ctx, x, y, r, 0.0, 360.0*M_PI/180.0, 0);
CGContextClosePath(ctx);
CGContextDrawPath(ctx, kCGPathStroke);
...并绘制一段馅饼:
CGContextSetRGBStrokeColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextSetLineWidth(ctx, 8.0);
CGContextMoveToPoint(ctx, x, y);
CGContextAddArc(ctx, x, y, r, (startDeg-90)*M_PI/180.0, (endDeg-90)*M_PI/180.0, 0);
CGContextClosePath(ctx);
CGContextDrawPath(ctx, kCGPathStroke);
...然后填充颜色填充:
CGContextSetRGBFillColor(ctx, color.red, color.green, color.blue, color.alpha );
CGContextMoveToPoint(ctx, x, y);
CGContextAddArc(ctx, x, y, r, (startDeg-90)*M_PI/180.0, (endDeg-90)*M_PI/180.0, 0);
CGContextClosePath(ctx);
CGContextFillPath(ctx);
忽略我没有粘贴在所使用的许多变量的变量声明中的事实,我希望代码是相当不言自明的。
现在:我如何更改代码以使用纹理来实际绘制线条/弧线?
同样,我如何使用纹理填充而不是颜色填充?
我正试图让这个应用程序完成,这是我最后的绊脚石。关于SO和网上其他地方的其他问题似乎没有以我能够遵循的方式回答这个问题。
感谢您的任何帮助!
罗伯特
答案 0 :(得分:4)
知道这已经过时,但可以使用这个简单的代码片段设置填充或描边模式:
// Somewhere in initialization code.
UIColor *pattern = [UIColor colorWithPatternImage:[UIImage imageNamed:@"pattern.png"]];
CGColorRef fillColor = [pattern CGColor];
CGColorRef strokeColor = [pattern CGColor];
// Probably in |draw| method call.
CGContextSetStrokeColorWithColor(context, strokeColor);
CGContextSetFillColorWithColor(context, fillColor);
希望它会帮助某人。还有其他非常先进的可能性 - 你可以通过多种方式操作模式:移动,缩放,旋转,使用彩色或模板模式以及许多其他模式,但这需要深入挖掘api文档。