在iPhone应用程序中画线和用粉笔纹理填充
问题描述:
我的iPhone应用程序中的代码在UIView中绘制饼图。一切都很棒,但我需要能够使用粉笔般的纹理来绘制轮廓,然后填充饼图的不同颜色。在iPhone应用程序中画线和用粉笔纹理填充
这里是从每个区域的现有代码提取物:
绘制饼图周围一圈:
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和其他网站上的其他问题似乎都不能以我可以遵循的方式回答问题。
任何帮助将受到感谢!
罗伯特
答
知道这是过时的,但一个可以设定填充或使用这种简单的代码片段行程模式:
// 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文档。