2012-07-06 149 views
0

我有一個SVG文件,我正在編輯插圖畫家。我已經使用這個文件中的路徑信息來創建一個Raphael對象。我現在想要做的是向圖形的某些部分添加文本。問題是Raphael只接受X和Y座標,而SVG文件內的文本是一個矩陣。如何將矩陣信息轉換爲簡單的x和y座標

Basicly我需要把這個:

<text transform="matrix(1 0 0 1 583 562)" font-size="12">Argentina</text> 

弄成這個樣子:

var t = paper.text(x, y, "Argentina"); 

這可能嗎?我也嘗試將文本轉換成輪廓,但最終的結果是複雜的,我更喜歡更輕的東西。

回答

1

我聽到您的問題。當我爲Raphael轉換器寫了一個SVG(第一個之一)時,我研究了這些問題。 轉換器將所有轉換從路徑中取出,並將所有座標從相對轉換爲絕對。在svg文本中,有很多東西讓你頭腦發熱。我寫的轉換器爲轉換文本提供了一些支持。我想你可能會嘗試通過轉換器來放置SVG,然後查看它參考文本所調出的JavaScript。 轉換器至少會提供一些格式,但您可能會嘗試的兩種格式是默認輸出格式。 轉到converter page

僅使用默認值上傳SVG。當你點擊「收集拉斐爾」,這將帶你到互動JavaScript生產。與路徑這隻交易,看看有什麼工作是與文本完成後單擊「或頁面」鏈接...

如果你需要幫助,我會回來檢查...

3

在特定情況下,矩陣剛翻譯爲x: 583y: 562,但是如果您的元素被縮放或旋轉,那麼這些值將會引起誤解。

可以應用在拉斐爾直接轉換矩陣,所有你需要的就是...

transformation = Raphael 
    .matrix(1, 0, 0, 1, 583, 562) 
    .toTransformString(); 

text = paper 
    .text(0, 0, "Argentina") 
    .attr("font-size", 12) 
    .transform(transformation)​ 

現在,如果不喜歡你的元素應用轉換,你可以計算出矩陣變換成通過做console.log(transformation)一個更人類可讀的格式,這會給你一個字符串,如t100,100r30,100,100s2,2,100,100這是很好的解釋Raphael's documentation

相關問題