canvas畫圖模糊問題
阿新 • • 發佈:2019-02-09
使用canvas畫圖時,會遇到圖片模糊的問題。
1.可以使用hidpi-canvas-polyfill;
舉個栗子
var getPixelRatio = function(context) {
var backingStore = context.backingStorePixelRatio ||
context.webkitBackingStorePixelRatio ||
context.mozBackingStorePixelRatio ||
context.msBackingStorePixelRatio ||
context.oBackingStorePixelRatio ||
context.backingStorePixelRatio || 1 ;
return (window.devicePixelRatio || 1) / backingStore;
};
//呼叫
var ratio = getPixelRatio(ctx);
在呼叫ctx.drawImage()的時候,給width和height乘以ratio,如下:
ctx.drawImage(document.querySelector('img'), 10, 10, 300 * ratio, 90 * ratio);
2.先將canvas畫布放大兩倍,後用css3將canvas縮小兩倍,同理可清晰。
<!DOCTYPE html>
<html>
<head>
<style>
.container{
zoom:0.5;//縮小
}
</style>
</head>
<body>
<div class="container">
<canvas id="myCanvas" width="800" height="600">
Your browser does not support the HTML5 canvas tag.
</canvas>
</div>
<script>
var c=document.getElementById("myCanvas" );
var ctx=c.getContext("2d");
ctx.scale(2,2);//放大
ctx.beginPath();
ctx.fillStyle="green";
ctx.arc(200,150,100,0,2*Math.PI);
ctx.stroke();
ctx.fill();
</script>
</body>
</html>