2009-11-15 35 views
0

我對任何一種圖形都很陌生(可能除了拍照:)),所以請原諒我昨天面對的問題的解釋不是很精確和可靠。Cézé和SVG解釋Bézier曲線的方式有什麼區別?

我想在Cocoa中生成代碼,它會在SVG文件的基礎上繪製矢量。我已經將SVG命令翻譯成NSBezierPath方法的調用,但收到的圖形不是很好...形狀與基本類似,但有一些...扭曲(?)。這可能不是可可方面設置的抗混疊和平坦度值的問題。我被告知這個問題可能是由可可方法ang SVG對Bézier曲線的控制點的不同解釋導致的 - 這可能嗎?或者還有什麼可能導致問題?

+0

你能顯示輸入SVG標記和你把它翻譯到NSBezierPath代碼的例子? – 2009-11-15 13:53:03

回答

5

SVG曲線指令是控制點,控制點,終點。

可可curveToPoint方法採用終點,控制點1,控制點2

+0

就是這樣!謝謝皮特。 – dzolanta 2009-11-15 15:03:54

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]; 

或者是我愚蠢的錯誤,我不能看到:)

//我沒有使用「添加評論「,因爲缺乏代碼格式。

+2

你應該把它融入你的問題。 – 2009-11-15 14:52:33