【发布时间】:2012-01-12 18:36:03
【问题描述】:
我正在努力在应用程序中呈现图表。涵盖了处理数据(绘制点和点之间的线),我感兴趣的是将此数据映射到图形上。
首先,让我告诉你我想要做什么(见下文),解决方案是图基有渐变。
我认为解决方案是只拍摄渐变的块图像,然后在代码中切割边缘(以某种方式)。
是否有现有的算法(Objective-C)可以做到这一点?
谢谢
【问题讨论】:
标签: objective-c ios graph drawing
我正在努力在应用程序中呈现图表。涵盖了处理数据(绘制点和点之间的线),我感兴趣的是将此数据映射到图形上。
首先,让我告诉你我想要做什么(见下文),解决方案是图基有渐变。
我认为解决方案是只拍摄渐变的块图像,然后在代码中切割边缘(以某种方式)。
是否有现有的算法(Objective-C)可以做到这一点?
谢谢
【问题讨论】:
标签: objective-c ios graph drawing
虽然您可以通过使用位图数据以任何方式合成图像。另一种简单的方法是创建一个 UIView,添加你想要的所有图像,然后从该 uiview 创建一个图像。
如何从 UIView 创建图像:
【讨论】:
我的解决方案是使用 bezierPath 将图像映射到路径。请看下面的示例代码
UIBezierPath* beizerPath2 = [UIBezierPath bezierPath];
[beizerPath2 moveToPoint:CGPointMake(0.0, 167)]; //Starting Point
[beizerPath2 addLineToPoint:CGPointMake(100, 40)];
[beizerPath2 addLineToPoint:CGPointMake(200, 70)];
[beizerPath2 addLineToPoint:CGPointMake(300, 30)];
[beizerPath2 addLineToPoint:CGPointMake(320, 30)];
[beizerPath2 addLineToPoint:CGPointMake(320, 167)]; //Finishing Point
[beizerPath2 closePath]; //Close Path
NSLog(@"Masking Feedstock with Bezier");
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = [beizerPath2 CGPath];
graphFeedStock.layer.mask = maskLayer;
【讨论】: