2012-01-19 6 views
2

非常によくレンダリングして動作するコアグラフィックを使用して、古典的な折れ線グラフを生成しています。 「layer.zPosition」コアグラフィックスを使用したリボングラフ(チャート)

-(void)drawRect:(CGRect)rect { 



     float colorChange = (0.1 * [self tag]); 

     theFillColor = [UIColor colorWithRed:(colorChange) green:(colorChange*0.50) blue:colorChange alpha:0.75f].CGColor; 


     CGContextRef c = UIGraphicsGetCurrentContext(); 
     CGFloat white[4] = {1.0f, 1.0f, 1.0f, 1.0f};  
     CGContextSetFillColorWithColor(c, theFillColor); 
     CGContextSetStrokeColor(c, white); 
     CGContextSetLineWidth(c, 2.0f); 
     CGContextBeginPath(c); 
     // 
     CGContextMoveToPoint(c, 0.0f, 200-[[array objectAtIndex:0] floatValue]); 
     CGContextAddLineToPoint(c, 0.0f, 200-[[array objectAtIndex:0] floatValue]); 
     // 
     distancePerPoint = (rect.size.width/[array count]); 
     float lastPointX = 750.0; 
     for (int i = 0 ; i < [array count] ; i++) 
     { 


      CGContextAddLineToPoint(c, (i*distancePerPoint), 200-[[array objectAtIndex:i] floatValue]); 


      lastPointX = (i*distancePerPoint); 
     } 
     // 
     CGContextAddLineToPoint(c, lastPointX, 200.0); 
     CGContextAddLineToPoint(c, 0, 200); 
     CGContextClosePath(c); 
     // 
     //CGContextFillPath(c); 
     CGContextDrawPath(c, kCGPathFillStroke); 
     //CGContextDrawPath(c, kCGPathStroke); 

    } 

(上記のコードは次のような結果を生成している)を使用して、次々と積み重ね複数の行があります(私は私が使用していたコードを投稿することができ enter image description here

は、必要に応じて、私はそれを行う方法が CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentityによって包括的にであれば3D効果;)

質問: はどのように私はTRANすることができます私の折れ線グラフに深さを持たせる? Iは、後に、私は(上述したように)変換、回転と展望を使用して表現したい(従って、それらにリボンを作る)線(S)のグラフに「深さ」を持ちたい

enter image description here

答えて

0

CALayersは「フラット」なので、Core GraphicsやCoreアニメーションでは簡単にはできません。折り紙のように機能し、3D空間で長方形を接続して3D構造を作成できますが、任意の多角形の3D形状を持つことはできません。

実際には厳密にはそうではありませんが、CADhapeLayersを使用して図面を作成し、3Dで操作することはできますが、一般的には、それぞれの図形を配置する位置を計算し、エッジが正しく整列します。

本当にこのような3D構造を作る方法は、OpenGLを直接使うことです。

低レベルのOpenGLプログラミングにあまり慣れていない方は、Galaxy EngineまたはCocos3Dをチェックしてみてください。

+0

ありがとうございます、あなたと同じものがあればもう少し長く開いてください。私はそれの周りに他の方法があるかもしれないと感じている。 - それでも、ありがとう、 – chewy

関連する問題