2011-02-16 190 views
2


     Canvas canvas = Canvas.createIfSupported(); 

     canvas.setWidth("200px"); 
     canvas.setHeight("200px"); 

     RootPanel.get().add(canvas); 

     Context2d context = canvas.getContext2d(); 
     context.setStrokeStyle("black"); 

     context.arc(50, 50, 20, 0, Math.PI*2); 

     context.stroke(); 

为什么我在这里有椭圆而不是圆?椭圆vs圆

+2

这可能是您的屏幕的纵横比不是1:1 - 您可以发布截图吗? – 2011-02-16 13:55:13

+0

您是否已经确认“椭圆而不是圆形”的这种效果不是显示器物理几何体的伪影?也就是说,你是否用矩形绘制了一个正方形,并且用一把尺子确认了所有的边是平等的? (如context.rect(30,30,40,40);) – rskar 2011-02-16 14:03:30

回答

4

您还可以设置坐标空间,使其画布的长宽比匹配。因此,您可以添加以下行:

canvas.setCoordinateSpaceWidth(200); 
canvas.setCoordinateSpaceHeight(200);