Cocoa和SVG解释Bézier曲线的方式有何不同?

时间:2009-11-15 12:51:54

标签: cocoa svg bezier

我对任何类型的图形都很陌生(可能除了拍照:))所以请原谅,如果我对昨晚遇到的问题的解释不是很精确和明白。

我正在尝试在Cocoa中生成代码,它将在SVG文件的基础上绘制向量。我已经将SVG命令转换为NSBezierPath方法的调用,但是接收到的图形并不是很好......形状类似于基本形状,但有一些......扭曲(?)。它可能既不是抗锯齿问题,也不是Cocoa方面的平坦值问题。有人提出这个问题可能是由于Cocoa方法对SVz的Bézier曲线控制点的不同解释 - 这可能吗?或者还有什么可能导致问题?

2 个答案:

答案 0 :(得分:5)

指令的SVG曲线是控制点,控制点,终点。

Cocoa curveToPoint方法采用终点,控制点1,控制点2

答案 1 :(得分:0)

@Peter Hosey

不确定。在这一刻,我认为Cocoa和SVG解释确实存在差异。我尝试使用基本的SVG示例,结果与Cocoa不同。

SVG版本:

<path d="M 100 200 C 100,100 400,100 400,200 z"/> 

可可版:

path = [[NSBezierPath alloc] init]; 
[path moveToPoint:NSMakePoint(100, 200)]; 
[path curveToPoint:NSMakePoint(100, 100) controlPoint1:NSMakePoint(400, 100) controlPoint2:NSMakePoint(400, 200)]; 
[path sePath]; 

或者这是我无法察觉的愚蠢错误:)

//由于缺乏代码格式化,我没有使用“添加评论”。