这篇文章给大家分享的是有关帆布元素变形失真的原因的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
遇到的问题:帆布元素变形失真的原因
一个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尺寸的宽高。
感谢各位的阅读!关于“画布元素变形失真的原因”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!