gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:59:01 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com