2013-09-16 24 views
3

我一直在使用D3和SVG顯示一系列矩形工作的一個圖表庫。該數據集支配顯示在一個給定區域的矩形的數量,在大多數情況下,數學不工作了乾淨,這意味着該矩形不啓動和整數結束。 Firefox,Chrome和Safari都通過對矩形進行抗鋸齒處理來應對這種意外情況。 IE似乎只是繞到最接近的像素值,並拒絕任何逆矩陣元素的抗鋸齒。我嘗試過改變形狀渲染等,但都無濟於事。IE10 SVG實現拒絕抗鋸齒<rect>元素?

下面是IE10的相同數據的側方比較和最新的Chrome發佈:

IE10:

enter image description here

鉻:

enter image description here

有沒有人知道這個修復不涉及改變SVG標記的結構?設置CSS屬性或標籤屬性優於更改元素本身。除此之外,有沒有人看過任何微軟文檔解釋這個決定的理由?到目前爲止,我還沒有能夠出現。

+0

你的圖像看起來一模一樣。 –

+1

他們顯示的數據相同,但其中一個在Chrome中呈現,另一個在IE10中呈現。 Chrome渲染中的所有條紋均應看起來均勻且均勻間隔,並具有反鋸齒邊緣。 IE渲染中的邊緣應該有銳利的邊緣,沒有局部的透明度,列間距不均勻,右邊第四列只有其他的一半。 如果知道,他們_still_看起來完全一樣,那麼就有_really_奇怪的是怎麼回事... – orochi235

+0

哦,對了,現在我明白了。抗鋸齒的行爲沒有規定,因此這些決定都是非常的平臺/瀏覽器特定的,並在底層本地圖形庫的水平發生(也可產品不同的結果取決於GPU與CPU渲染)。通常使用crispEdges會在每個平臺上爲您提供非反鋸齒結果。您有時可以通過添加過濾器來「手動反混淆」,但結果無法保證。 –

回答

0

IE似乎並不關心形狀色性,但我已經通過指定一個微小的旋轉變換髮現,你可以強制其抗混疊形狀:

svg { 
    transform: rotate(.00001deg); /* hack to force anti-aliasing in IE */ 
} 

測試在IE11 。