iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >使用canvas怎么对阴影和图形进行变换
  • 332
分享到

使用canvas怎么对阴影和图形进行变换

2023-06-09 15:06:11 332人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关使用canvas怎么对阴影和图形进行变换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、阴影设置阴影的颜色:值为标准的CSS颜色值,用于设定阴影颜色效果,默认是

这篇文章将为大家详细讲解有关使用canvas怎么对阴影和图形进行变换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一、阴影设置

阴影的颜色:值为标准的CSS颜色值,用于设定阴影颜色效果,默认是全透明的黑色

context.shadowColor = color;

阴影模糊度:用户设定阴影的模糊程度,其数值不跟像素挂钩,默认为0

context.shadowBlur = 5;

阴影的偏移:

shadowOffsetX 和 shadowOffsetY 用来设定阴影在 X 和 Y 轴的延伸距离。负值表示阴影会往上或左延伸,正值则表示会往下或右延伸,它们默认都为 0

context.shadowOffsetX = 10; //正值:往右context.shadowOffsetY = 10;  //正值:往下

设置文字阴影的例子

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <style type="text/css">            canvas{                border:1px solid red;            }        </style>    </head>    <body>        <canvas id="mycanvas" width="500" height="500"></canvas>    </body>    <script type="text/javascript">        var canvas = document.getElementById("mycanvas");        var context = canvas.getContext("2d");        context.font = "bold 50px 微软雅黑";        context.fillStyle="red";        //阴影的颜色        context.shadowColor = "orangered";        //阴影模糊度        context.shadowBlur = 20;        //阴影的偏移        context.shadowOffsetX = 10; //正值:往右        context.shadowOffsetY = 10;  //正值:往下        context.fillText("你好",100,100);    </script></html>

使用canvas怎么对阴影和图形进行变换
 

二、图形变换

我们之前在2D变换中也学习过这些知识,但是我们canvas图形变换有所不同,不同点就是这里的变换并不是变换图形,而是变换坐标系,因此,我们在变换完一个图形之后,坐标系就发生变换了,那么我们如果再直接绘图的话就会出现问题,下面我们来具体是什么情况吧

为了验证我们上面的说法,我们来看一个例子

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <style type="text/css">            canvas{                border:1px solid red;            }        </style>    </head>    <body>        <canvas id="mycanvas" width="800" height="800"></canvas>    </body>    <script type="text/javascript">        var canvas = document.getElementById("mycanvas");        var context = canvas.getContext("2d");        //用黑色直线线表示开始的x/y轴        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 5;        context.lineTo(800,0);        context.stroke();        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 5;        context.lineTo(0,800);        context.stroke();        //原矩形:蓝色        context.beginPath();        context.fillStyle = "cornflowerblue";        context.fillRect(0,0,50,50);        context.fill();        //平移矩形:粉色        context.beginPath();        context.translate(200,0)  //正:往右、下        context.fillStyle = "deeppink";        context.fillRect(0,0,50,50);        context.fill();        //用蓝色直线表示平移以后的坐标轴        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 5;        context.lineTo(400,0);        context.stroke();        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 5;        context.lineTo(0,400);        context.stroke();    </script></html>

得到如下效果:证明图形变换以后是改变了坐标系的

使用canvas怎么对阴影和图形进行变换
 

旋转

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <style type="text/css">            canvas{                border:1px solid red;            }        </style>    </head>    <body>        <canvas id="mycanvas" width="800" height="800"></canvas>    </body>    <script type="text/javascript">        var canvas = document.getElementById("mycanvas");        var context = canvas.getContext("2d");        //用黑色直线表示平移以后的坐标轴        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 10;        context.lineTo(800,0);        context.stroke();        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 10;        context.lineTo(0,800);        context.stroke();        //原图:蓝色        context.beginPath();        context.fillStyle = "cornflowerblue";        context.fillRect(100,0,50,50);        context.fill();         //旋转:绿色        context.beginPath();        context.fillStyle = "limegreen";        context.rotate(Math.PI/4);        context.fillRect(100,0,50,50);        //用蓝色直线表示平移以后的坐标轴        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 5;        context.strokeStyle = "blue";        context.lineTo(800,0);        context.stroke();        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 5;        context.strokeStyle = "blue";        context.lineTo(0,800);        context.stroke();    </script></html>

效果如下:

使用canvas怎么对阴影和图形进行变换
 

说明我们图形默认是绕canvas坐标系原点旋转的,图形在旋转的过程中,坐标系也会跟着旋转

图形缩放

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <style type="text/css">            canvas{                border:1px solid red;            }        </style>    </head>    <body>        <canvas id="mycanvas" width="800" height="800"></canvas>    </body>    <script type="text/javascript">        var canvas = document.getElementById("mycanvas");        var context = canvas.getContext("2d");        //用黑色直线线表示开始的坐标系        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 30;        context.lineTo(100,0);        context.stroke();        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 30;        context.lineTo(0,100);        context.stroke();        //原图:蓝色        context.beginPath();        context.fillStyle = "cornflowerblue";        context.fillRect(100,0,50,50);        context.fill();        //缩放:粉色  ,放大/小坐标系,图形大小也缩放        context.scale(2,1);   //第一个参数是X轴缩放比例,第二个参数是Y轴缩放比例        context.beginPath();        context.fillStyle = "pink";        context.fillRect(100,0,50,50);    //用蓝色直线表示平移以后的坐标轴        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 10;        context.strokeStyle = "blue";        context.lineTo(100,0);        context.stroke();        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 10;        context.strokeStyle = "blue";        context.lineTo(0,100);        context.stroke();    </script></html>

效果如下:

使用canvas怎么对阴影和图形进行变换
 

我们可以看到,我们在放大X轴图形的宽度时,我们的坐标系的X轴也跟着放大了

那我们在对canvas图形做变换之后,怎么才能重新再canvas上绘制我们我们想要的图形而又不用繁琐的方式将他改变的坐标系恢复呢?
 

刚好canvas有状态的保存和获取

使用canvas怎么对阴影和图形进行变换

比如我们拿上面写过的例子进行演示一下状态的保存和获取效果

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <style type="text/css">            canvas{                border:1px solid red;            }        </style>    </head>    <body>        <canvas id="mycanvas" width="800" height="800"></canvas>    </body>    <script type="text/javascript">        var canvas = document.getElementById("mycanvas");        var context = canvas.getContext("2d");        //用黑色直线线表示开始的坐标系        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 30;        context.lineTo(100,0);        context.stroke();        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 30;        context.lineTo(0,100);        context.stroke();        //原图:蓝色        context.beginPath();        context.fillStyle = "cornflowerblue";        context.fillRect(100,0,50,50);        context.fill();        //缩放:粉色  ,放大/小坐标系,图形大小也缩放        context.save();        context.scale(2,1);   //第一个参数是X轴缩放比例,第二个参数是Y轴缩放比例        context.beginPath();        context.fillStyle = "pink";        context.fillRect(100,0,50,50);        context.restore();    //用蓝色直线表示平移以后的坐标轴        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 10;        context.strokeStyle = "blue";        context.lineTo(100,0);        context.stroke();        context.beginPath();        context.moveTo(0,0);        context.lineWidth = 10;        context.strokeStyle = "blue";        context.lineTo(0,100);        context.stroke();    </script></html>

关于使用canvas怎么对阴影和图形进行变换就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 使用canvas怎么对阴影和图形进行变换

本文链接: https://www.lsjlt.com/news/256514.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用canvas怎么对阴影和图形进行变换
    这篇文章将为大家详细讲解有关使用canvas怎么对阴影和图形进行变换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、阴影设置阴影的颜色:值为标准的CSS颜色值,用于设定阴影颜色效果,默认是...
    99+
    2023-06-09
  • HTML5 canvas怎么实现图形变换
    这篇文章主要介绍“HTML5 canvas怎么实现图形变换”,在日常操作中,相信很多人在HTML5 canvas怎么实现图形变换问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • Python使用 OpenCV 进行图像投影变换
    投影变换(仿射变换) 在数学中,线性变换是将一个向量空间映射到另一个向量空间的函数,通常由矩阵实现。如果映射保留向量加法和标量乘法,则映射被认为是线性变换。 要将线性变换应用于向量...
    99+
    2024-04-02
  • 怎么使用OpenCV对图像进行空间变换
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-22
  • 使用canvas怎么对图片进行压缩
    本篇文章为大家展示了使用canvas怎么对图片进行压缩,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前提的函数将file文件转化为base64function changeFileToBa...
    99+
    2023-06-09
  • 使用Canvas怎么对图片进行处理
    这篇文章给大家介绍使用Canvas怎么对图片进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、主要API整个流程中所用到的主要Canvas API有:绘制图像: drawImage()获取图像数据: getIm...
    99+
    2023-06-09
  • CSS3怎么设置对象盒子阴影和图片阴影
    本篇内容主要讲解“CSS3怎么设置对象盒子阴影和图片阴影”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS3怎么设置对象盒子阴影和图片阴影”吧!  ...
    99+
    2024-04-02
  • 怎么用HTML5 Canvas控制图形矩阵变换
    小编给大家分享一下怎么用HTML5 Canvas控制图形矩阵变换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 当我们把对应的...
    99+
    2024-04-02
  • HTML5 canvas怎么实现图形变换效果
    这篇文章主要介绍“HTML5 canvas怎么实现图形变换效果”,在日常操作中,相信很多人在HTML5 canvas怎么实现图形变换效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • 怎么用JAVA对彩色图片进行灰度变换
    这篇文章主要介绍“怎么用JAVA对彩色图片进行灰度变换”,在日常操作中,相信很多人在怎么用JAVA对彩色图片进行灰度变换问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用JAVA对彩色图片进行灰度变换”的疑...
    99+
    2023-06-03
  • 怎么在canvas-id对应的canvas上进行绘图
    本文小编为大家详细介绍“怎么在canvas-id对应的canvas上进行绘图”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么在canvas-id对应的canvas上进行绘图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-06-26
  • 使用Canvas怎么对像素进行操作
    这篇文章给大家介绍使用Canvas怎么对像素进行操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。将图像添加到画布在我们开始播放视频之前,让我们看看如何将图像添加到画布。<img src><...
    99+
    2023-06-09
  • 使用canvas怎么将二维码和图片进行合成
    这期内容当中小编将会给大家带来有关使用canvas怎么将二维码和图片进行合成,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。实现思路是这样的使用jr-qrcode将url生成data:base64供img使...
    99+
    2023-06-09
  • HTML 5中怎么利用canvas对图像进行处理
    这篇文章将为大家详细讲解有关HTML 5中怎么利用canvas对图像进行处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。下面就介绍一个简单的例子:<...
    99+
    2024-04-02
  • 怎么在Python中使用PyQt5对图形界面进行美化
    今天就跟大家聊聊有关怎么在Python中使用PyQt5对图形界面进行美化,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 软件背景的添加最简单的方法就是直接在设计界面时,在style...
    99+
    2023-06-08
  • 如何使用HTML5进行SVG矢量图形替换
    这篇文章主要讲解了“如何使用HTML5进行SVG矢量图形替换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用HTML5进行SVG矢量图形替换”吧! ...
    99+
    2024-04-02
  • 使用OpenCV怎么删除图片中的阴影
    这期内容当中小编将会给大家带来有关使用OpenCV怎么删除图片中的阴影,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。numpy的ndarray数组numpy是一个第三方的模块,用它我们可以很方便的处理多维...
    99+
    2023-06-14
  • 怎么使用HTML5 Canvas API控制图片的缩放变换
    这篇文章给大家分享的是有关怎么使用HTML5 Canvas API控制图片的缩放变换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。缩放变换scale(sx,sy)传入两个参数,分...
    99+
    2024-04-02
  • 使用Python怎么对list、tuple、str和dict进行转换
    使用Python怎么对list、tuple、str和dict进行转换?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、字典(dict)dict = {‘...
    99+
    2023-06-08
  • linux怎么切换图形化和命令行
    在Linux系统中,可以通过以下几种方式来切换图形化界面和命令行界面: 使用快捷键:在大多数Linux发行版中,可以使用快捷键C...
    99+
    2024-03-13
    linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作