2012-01-12 127 views
0

我正在处理在应用程序中渲染图形。处理数据(绘制点和点之间的线条)被覆盖,我感兴趣的是将这些数据映射到图形的顶部。首先,让我告诉你我想做什么(见下文),解决方案是图基有一个渐变。iOS图形渲染

我认为解决的办法是取一个梯度的块图像,只是在代码(以某种方式)削减边缘。

是否有一个现有的算法(Objective-C)会这样做?

感谢

let me show you what I want to do

+0

您可以参考:http://stackoverflow.com/questions/769749/is-there-a-good-charting-library-for-iphone – samfisher 2012-01-12 18:39:54

回答

0

我的解决办法是将图像映射到与使用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;  
0

,而你可以合成图像要通过与位图数据工作的任何方式。另一个很简单的方法就是创建一个UIView,添加你想要的所有图像,然后从该uiview创建一个图像。

如何创建一个图像形成的UIView:

How to create an image from a UIView/UIScrollView