我正在用HTML5 canvas 2D上下文構建方格網格。我翻譯&縮放畫布,使網格廣場是一個單位的大小,但是30px,說,未轉換。 Here's an example 10px格子的30px正方形。縮放HTML5畫布中字體大小小於1
這工作正常,除了一件事:文本。
要指定適合正方形的畫布的字體,我需要指定小於1的字體大小。
例如,「.5px sans-serif」應爲平方尺寸的一半(即30px未轉換正方形的「15px sans-serif」)。這至少在Chrome中失敗了,並且畫布恢復爲更大的默認值。
我找到的唯一解決方案是在繪製文本時撤消畫布縮放,yuk!
有沒有辦法通過亞像素字體規格解決這個問題? (自然在轉換之後,字體將是一個理智的大字體,亞像素字體大小隻是相對於畫布轉換而言)
您可能更喜歡下面的save&ctx.setTransform(1,0,0,1,0,0),而不是等效的比例。 – backspaces
@ backpaces保存/恢復在性能方面相當昂貴(因爲他們使用push/pop堆棧方法,並且他們保存/重新設置整個上下文的設置)。 setTransform是(重新)設置比例的好替代方法,但scale只是一個設置變換矩陣值的包裝,就像setTransform一樣,但您需要setTransform才能在scale()積累時完全重置比例。希望答案有幫助! – K3N
啊,我錯過了..避免保存/恢復對絕對是一個好主意。 – backspaces