8

我尝试在画布上画一个圆圈,我以前做过,但这次我发现它非常像素化

var game;

function game (){

    this.canvas = document.getElementById('canvas');

    this.ctx = this.canvas.getContext('2d');



    this.initCanvas = function(){

    }

    this.draw1 = function(){
        this.ctx.beginPath();
        this.ctx.arc(50, 75, 10, 0, Math.PI*2, true); 
        this.ctx.closePath();
        this.ctx.fill();
    }

    this.draw2 = function(){
        this.ctx.beginPath();
        this.ctx.arc(100,75,10,0,Math.PI*2,true);
        this.ctx.closePath();
        this.ctx.stroke();
    }

    this.run = function(){
        this.initCanvas();
        this.draw1();
        this.draw2();
    }

    window.onresize = function() {
        this.canvas.width = window.innerWidth;
        this.canvas.height = window.innerHeight;
    };
}

game = new game();

http://jsfiddle.net/RG6dn/6/

我不知道这是由于浏览器(我在 chrome 和 firefox 上有同样的东西)还是我的电脑

谢谢

4

2 回答 2

21

您可能正在使用 CSS 设置画布的宽度。在 CSS 中更改画布元素的宽度会拉伸画布内的像素

例如。

<canvas style='width:400px;height:400px'></canvas>

相反,您需要使用画布元素本身的宽度和高度属性来定义画布包含多少像素。

正确方法:

<canvas width='400px' height='400px'><canvas>

于 2014-10-02T13:50:22.047 回答
0

这篇文章不是最近的,但它帮助我解决了我的问题,但答案中有错误。当我们初始化画布的高度和宽度时,我们没有传递一个以“px”为单位的字符串,而只是一个带有数字的字符串。像这样 :

<canvas width='400' height='400'><canvas>

Ajouve :在您的代码中,您犯了一个错误,在更正错误后它可以工作

 var game;

 function game (){

 this.initCanvas = function(){
     this.canvas = document.getElementById('canvas');
     this.ctx = this.canvas.getContext('2d');   
 }

 this.draw1 = function(){
     this.ctx.beginPath();
     this.ctx.arc(50, 75, 10, 0, Math.PI*2, true); 
     this.ctx.closePath();
     this.ctx.fill();
 }

 this.draw2 = function(){
     this.ctx.beginPath();
     this.ctx.arc(100,75,10,0,Math.PI*2,true);
     this.ctx.closePath();
     this.ctx.stroke();
 }
    // Here define your fonction for resizing canvas
     this.resize = function() {
     this.canvas.width = window.innerWidth;
     this.canvas.height = window.innerHeight;
 };

 this.run = function(){
     this.initCanvas();
     // Call your function here
     this.resize();
     this.draw1();
     this.draw2();
 }

}

   game = new game();

   game.run();
于 2020-05-18T17:39:02.743 回答