objective-c - 带核心图形的功能区图(图表)

标签 objective-c ios graph charts ribbon

我正在使用核心图形生成经典的折线图,该图形渲染效果很好。
有几行使用“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);

    }

(上面的代码生成以下结果):

(如果需要,我可以发布用于3d效果的代码,但是我的方式通常是通过
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;)

问题:
如何将线形图转换为深度图?
我想对折线图有一个“深度”(因此使它们成为一条丝带),稍后我想使用“旋转”和“透视变换”来表示它们(如上所述)

最佳答案

由于CALayers是“平面”的,因此您无法轻松地使用Core Graphics或Core动画-它们像折纸一样工作,您可以通过在3D空间中连接矩形来制作3D结构,但不能具有任意的多边形3D形状。

实际上,这并非完全正确,您可以考虑使用CAShapeLayers进行绘制,然后以3D方式对其进行操作,但我认为通常很难计算出每个形状的位置并使其边缘成直线正确地。

实际上,制作这种3D结构的方法是直接使用OpenGL。

如果您对底层OpenGL编程不太熟悉,则可能需要查看Galaxy Engine或Cocos3D。

关于objective-c - 带核心图形的功能区图(图表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924021/

相关文章:

algorithm - 有向图中的路径相似性

c++ - 从 C++ 调用 Objective-C 类方法

ios - Objective-C继承

ios - 电子邮件截图而不保存到相机胶卷

data-structures - 操作大型(不适合内存)图的有效方法

r - R绘图图中的第二个Y轴

objective-c - iOS7 - 从 TableView 推送 segue 期间内容重叠

objective-c - 如何将 subview 添加到 View

iOS PDF 的路径每次都在变化

ios - 想要了解如何直接从我的 iOS 应用程序发送电子邮件?山魈或邮件枪选项