我使用canvas元素製作了一個非常簡單的矩形。但是,如果fillRect(x,y,width,height)中x和y的參數是除0和0之外的任何其他任何值,則在放大和/或移動設備上時,所有邊看起來完全模糊。如果x和y爲0和0,則矩形的頂部和左側邊緣是超級定義的,即使放大,但底部和右側邊緣模糊不清。我使用Chrome/Firefox以及使用Safari的750x1334移動屏幕在1920x1080屏幕上渲染。如何修復HTML5畫布中的模糊形狀邊緣?
這在放大到100%時在桌面上不是問題,但在移動設備上它看起來像垃圾。如果您完全放大Chrome和Firefox以及JSFiddle,則可以清楚地看到模糊的邊緣。我不使用CSS調整畫布上的寬度和高度。它使用畫布屬性和/或JS完成。我用來在瀏覽器上測試的HTML如下。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
</head>
<body>
<canvas id="gameCanvas" width="150" height="150">A game.</canvas>
<script>
var canvas = document.getElementById("gameCanvas");
var ctx = canvas.getContext("2d");
ctx.fillRect(0, 0, 100, 100);
</script>
</body>
</html>
編輯:我沒有試圖繪製1像素線。我嘗試了半像素值的嘗試,但它使模糊的邊緣變得更糟。
前兩個屏幕截圖分別來自Safari上的iPhone 7屏幕,非縮放和縮放。最後的屏幕截圖位於1920x1080筆記本電腦屏幕上,在Chrome上放大。
[畫布附圖中,類似的線條,是模糊的(可能的重複http://stackoverflow.com/questions/8696631/canvas-drawings像線一樣模糊) –
我試着用半像素值進行試驗,但它只是讓它們變得更糟。而且我不繪製1像素線,我畫矩形。 – Pearu
http://stackoverflow.com/q/28057881/215552相同的修復。 –