帆布元素变形失真的原因

  介绍

这篇文章给大家分享的是有关帆布元素变形失真的原因的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

遇到的问题:帆布元素变形失真的原因

一个DOM元素存在三种尺寸:风格尺寸,html尺寸,css尺寸。

使用帆布元素时,帆布元素默认宽高是300 px * 150 px。这里的默认尺寸是html尺寸。

为了更好地帮助理解,以作画为例。画板是css尺寸或者风格尺寸,画布是html尺寸。

如果我们没有显示指定帆布元素的html尺寸,而在css文件中指定了它的css尺寸。结果是十分令人困惑。

例如我们在一个默认300 px * 150 px的画布上画了一个圆半径为50 px的圆。

& lt; html  lang=皕h"比;   & lt; head>   ,,,& lt; meta  charset=癠TF-8"比;   ,,,& lt; title>帆布尺寸& lt;/title>   ,,,& lt; style>   ,,,,,,,# canvas  {   ,,,,,,,,,,,宽度:,200 px;   ,,,,,,,,,,,身高:,200 px;   ,,,,,,,}   ,,,& lt;/style>   & lt;/head>   & lt; body>   & lt; div>   ,,,& lt; canvas  id=癱anvas"祝辞& lt;/canvas>   & lt;/div>   & lt; script>   ,,,window.onload =, function  (), {   ,,,,,,,const  canvas =, . getelementbyid (“canvas");   ,,,,,,,const  ctx =, canvas.getContext (“2 d");   ,,,,,,,ctx.beginPath ();   ,,,,,,,ctx.strokeStyle =,“# aaaaaa";   ,,,,,,,ctx.arc (100,, 100,,,,,, 2, *, Math.PI);   ,,,,,,,ctx.stroke ();   ,,,,,,,ctx.closePath ();   ,,,};   & lt;/script>   & lt;/body>   & lt;/html>

最后显示的结果如下:

帆布元素变形失真的原因

可以看出画布的尺寸确实是200 * 200。但是圆已经变成了椭圆,图形发生了形变。这是为什么呢?

如果移除css设定的尺寸又会怎么样呢?

帆布元素变形失真的原因

可以看出此时图形是正常的。画布的尺寸确实是默认的300 * 150 .

从对比以及想象中我们可以得出结论:

起初我们是在300年 150年的画布上绘制一个圆。绘制完成之后,我们又希望将画布的尺寸变成200 200,同时画布还是那块画布,不作更换。

可行的方法是将画布经行拉伸。假设画布存在弹性,那么一块画布从300年 150年拉伸成200 200。画布上的圆的长半轴变成原来的1.33倍,短半轴变成0.68倍。此时圆自然就是椭圆了。

<强>结论:

在使用帆布画图的时候,为了避免不必要的麻烦,一定记得为画布元素设定html尺寸的宽高。

感谢各位的阅读!关于“画布元素变形失真的原因”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

帆布元素变形失真的原因