Canvas设置样式无效导致圆变成椭圆的问题研究剖析

简介: Canvas设置样式无效导致圆变成椭圆的问题研究剖析

Canvas设置样式无效导致圆变成椭圆的问题研究剖析,如下面代码段。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 设置的是600*600 */
        canvas{width: 600px;height: 600px;}
    </style>
</head>
<body>    
    <canvas id="canvas"  style="background: red;"></canvas>
    <script>
         //VSCode:恶心;插件不好搞;
        /** @type {HTMLCanvasElement}*/
        let canvas=document.getElementById('canvas');
        let ctx=canvas.getContext('2d');
        //画圆操作
        //利用2d对象进行绘制圆操作
        //arc(x,y,半径,开始位置,结束角度,选转方向)false:表示顺指针;true:逆时针
        console.log(canvas.width+","+canvas.height);
        ctx.arc(80,80,50,0,2*Math.PI,true); //绘制圆方法;
        ctx.fillStyle='blue';
        ctx.fill();
    </script>
</body>
</html>


使用浏览器输出测试效果如下所示。


ctx.arc(80,80,50,0,2Math.PI,true); //绘制圆方法;改行代码我们设置的是绘制圆,但是显示的椭圆怎么回事嗯?
这时候使用下面的语句进行测试一下,查看canvas的宽、高。
我们发现canvas的宽和高是300 150.如下所示。


为什么回事这样呢?我们现在把canvas的样式设置给注释掉。再次运行代码,查看浏览器效果。发现即使我们没有给canvas设置宽和高,也会自动有宽 高位300 150的设置。


这时候,刚才绘制的椭圆思路已经很清晰了,原因在于,canvas绘制之后,首先相当于作为了一张300150的图片进行绘制,即上图。这时候把上图截图后放到画图。


因为默认的canvas已经绘制完圆形图片,现在被作为了图片再进行样式设置。代码“canvas{width: 600px;height: 600px;} ”相当于对这个图片进行拉伸设置,那么我们对这个图片进行拉伸,拉伸后效果就是图1的效果。


这是canvas在使用过程中很容易掉的一个坑,所以,建议针对canvas的设置,直接在canvas的属性里面设置,不要在样式里面设置。


目录
相关文章
|
2月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.4、基础标识绘制(绘制线line函数、rectangle函数绘制四边形、circle函数绘制圆形、putText函数绘制文字、putText绘制中文文字)
OpenCV这么简单为啥不学——1.4、基础标识绘制(绘制线line函数、rectangle函数绘制四边形、circle函数绘制圆形、putText函数绘制文字、putText绘制中文文字)
28 0
|
3月前
|
移动开发 前端开发 JavaScript
html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形
html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形
127 0
html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形
|
4月前
|
Web App开发 前端开发
canvas详解02-样式和颜色控制
canvas详解02-样式和颜色控制
50 1
|
6月前
|
存储 前端开发
canvas自定义绘制顺序解决遮挡问题
canvas自定义绘制顺序解决遮挡问题
80 0
|
JavaScript
js获取屏幕上圆和椭圆的点坐标
js获取屏幕上圆和椭圆的点坐标
js获取屏幕上圆和椭圆的点坐标
|
11月前
CSS3文本居中显示、圆形圆角绘制、立体阴影效果设置实例演示
CSS3文本居中显示、圆形圆角绘制、立体阴影效果设置实例演示
92 0
三角形绘制规则
三角形绘制规则
74 0
|
前端开发 JavaScript
canvas设置像素与画布样式宽高不符的原因及解决办法
canvas设置像素与画布样式宽高不符的原因及解决办法
657 0
|
前端开发 UED
CSS3绘制椭圆、半椭圆原理详解
前言 作为前端开发人员,利用CSS绘制各种图形在所难免。比如说常见的弧形、椭圆、三角形等等,有的开发人员为了开发简便,则直接使用图片来替代各种图形,但是这样做有一个弊端:页面性能会受到一定得影响,会降低用户体验。本篇文章则教大家如何绘制一个椭圆,这也是经常遇到的形状。
676 0
CSS3绘制椭圆、半椭圆原理详解