現(xiàn)在我們探討一下在canvas上繪制圖像的另一種方式一使用變換(transformationh接下 來的代碼清單顯示結果跟上面是一樣的,只是繪制對角線的代碼不一樣。這個簡單示例可能會讓 你誤認為使用變換增加了不必要的復雜性。事實并非如此,其實變換是實現(xiàn)復雜canvas操作的 最好方式。在后面的示例中將會看到,我們使用了大《:的變換,而這對熟悉HTML5 Canvas API 的復雜功能是至關重要的。
也許了解變換最簡單的方法(至少這種方法不涉及大量的數(shù)學公式,也不需手足并用地去解 釋)就是把它當成是介于開發(fā)人員發(fā)出的指令和canvas顯示結果之間的一個修正層(modificatkm layer)0不管在開發(fā)中是否使用變換,修正層始終都是存在的。
修正一在繪制系統(tǒng)中的說法是變換——在應用的時候可以被順序應用、組合或者隨意修 改。每個繪制操作的結果顯示在canvas上之前都要經(jīng)過修正層去做修正〃雖然這么做增加了額 外的復雜性,但卻為繪制系統(tǒng)添加了更為強大的功能,可以像目前主流圖像編輯工具那樣支持實 時圖像處理,所以API中這部分內(nèi)容的復雜性是必要的。
不在代碼中調(diào)用變換函數(shù)并不意味著可以提升canvas的性能。canvas在執(zhí)行的時候,變換 會被呈現(xiàn)引擎隱式調(diào)用,這與開發(fā)人員是否直接調(diào)用無關。在接觸最基本的繪制操作之前,提前 了解系統(tǒng)背后的原理至關重要。
關于可重用代碼有一條重要的建議:一般繪制都應從原點(坐標系中的0,0點)開始,應用 變換(縮放、平移、旋轉等),然后不斷修改代碼直至達到希望的效果。