2016-10-25 56 views
-1

當使用HTML5的畫布元素,我一直看到以下類型的代碼:有什麼用「背景」的

canvas = document.getElementById("id") 
ctx = canvas.getContext("2d") /* or may be 'webgl' or something else */ 
ctx.moveTo() 
... 
ctx.lineTo() 
... 
blabla... 

我不知道爲什麼我們在這裏需要context對象:那豈不是更簡單的只寫

canvas.moveTo() 
canvas.drawImage() 
canvas.render() 

我看不出有什麼必要性,以創建一個名爲context一個額外的事情。我看到一個解釋說,這是因爲有幾個上下文,如'2d','webgl' ......他們使用不同的繪圖方法,畫布必須知道使用哪一個。但是我對這個解釋並不滿意,因爲我們可以給canvas添加一個屬性,如canvas.set_method('2d')。必須有一些複雜的理由來使用上下文管理器而不是普通的畫布。 任何人都可以幫我澄清一下嗎?

+1

畫布就是這樣。你可以借鑑的東西。上下文通知系統如何在其上繪製。如果它是一個真實世界的「畫布」,那麼上下文就會告訴畫布你將如何在它上面放置東西:油漆,蠟筆,木炭,鉛筆,蠟筆,先生。豆爆炸的報道等... –

+0

只需添加到@ MarcB的好評:您可以查看[W3C](http://www.w3.org/TR/2dcontext/)的歷史建議和建議(標準爲帆布身體)。你的答案可能是他們的反芻。 – markE

回答

0

它可能清楚地區分不同上下文的API和畫布的常用功能。

不同的上下文是不同的API--它們有不同的函數集。如果要直接在畫布上調用函數,那麼畫布將必須能夠接受所有這些不同的函數,並且在什麼時候允許使用哪些函數會引起混淆;並且他們 將與可以使用的功能混淆,而不管上下文。

This article由Tim Berners-Lee在2008年撰寫,討論模塊性,一般 ,恰巧提及畫布和上下文。它討論分裂2d的上下文API(我認爲這只是意味着把它放在一個單獨的規範中)。如果上下文API是畫布的一部分,這將會很尷尬。

相關問題