校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > canvas 陰影和圖形變換的示例代碼

canvas 陰影和圖形變換的示例代碼

熱門標簽:成都智能外呼系統平臺 云南大理400電話申請官方 當涂高德地圖標注 江蘇智能電銷機器人哪家好 四川點撥外呼系統 南寧點撥外呼系統哪家公司做的好 鎮江智能外呼系統有效果嗎 電銷機器人電話用什么卡 黃島區地圖標注

本文介紹了canvas 陰影和圖形變換的示例代碼,分享給大家,具體如下:

一、陰影設置

1、陰影的顏色:值為標準的CSS顏色值,用于設定陰影顏色效果,默認是全透明的黑色

context.shadowColor = color;

2、陰影模糊度:用戶設定陰影的模糊程度,其數值不跟像素掛鉤,默認為0

context.shadowBlur = 5;

3、陰影的偏移:

shadowOffsetX 和 shadowOffsetY 用來設定陰影在 X 和 Y 軸的延伸距離。負值表示陰影會往上或左延伸,正值則表示會往下或右延伸,它們默認都為 0

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

4、設置文字陰影的例子

<!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>


 

二、圖形變換

我們之前在2D變換中也學習過這些知識,但是我們canvas圖形變換有所不同,不同點就是這里的變換并不是變換圖形,而是變換坐標系,因此,我們在變換完一個圖形之后,坐標系就發生變換了,那么我們如果再直接繪圖的話就會出現問題,下面我們來具體是什么情況吧

1、為了驗證我們上面的說法,我們來看一個例子

<!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>

得到如下效果:證明圖形變換以后是改變了坐標系的


 

2、旋轉

<!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坐標系原點旋轉的,圖形在旋轉的過程中,坐標系也會跟著旋轉

3、圖形縮放

<!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>

效果如下:


 

我們可以看到,我們在放大X軸圖形的寬度時,我們的坐標系的X軸也跟著放大了

那我們在對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 陰影和圖形變換的示例代碼》,本文關鍵詞  canvas,陰影,和,圖形,變換,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《canvas 陰影和圖形變換的示例代碼》相關的同類信息!
  • 本頁收集關于canvas 陰影和圖形變換的示例代碼的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    奇米色777欧美一区二区| 亚洲黄一区二区三区| 日韩亚洲欧美在线| 国产精品综合在线视频| 欧美亚洲日本国产| 国产精品你懂的| 韩国v欧美v日本v亚洲v| 欧美日韩精品一区二区天天拍小说| 亚洲品质自拍视频| 国产精品家庭影院| 99视频精品全部免费在线| 成人午夜av电影| 日韩伦理免费电影| 久久久精品免费网站| 欧美一区中文字幕| 91成人免费网站| 成人av在线播放网站| 狠狠色丁香久久婷婷综合_中| 一区二区三区电影在线播| 久久久久久97三级| 欧美一区二区三区啪啪| 91丨九色丨国产丨porny| 国产成人在线视频网站| 久久成人精品无人区| 亚洲无线码一区二区三区| 亚洲欧美日韩精品久久久久| 国产喷白浆一区二区三区| 日韩欧美成人一区二区| 在线成人av网站| 欧美午夜一区二区三区免费大片| 97精品超碰一区二区三区| 丁香婷婷综合五月| 国产盗摄视频一区二区三区| 久国产精品韩国三级视频| 久久精品久久99精品久久| 免费成人结看片| 美女一区二区视频| 喷水一区二区三区| 奇米精品一区二区三区在线观看| 日韩福利电影在线观看| 青草国产精品久久久久久| 免费观看日韩av| 免费观看在线综合| 激情综合五月婷婷| 国产麻豆视频一区| 成人的网站免费观看| 99精品国产一区二区三区不卡| 97se亚洲国产综合在线| 99re热视频精品| 日本久久精品电影| 欧美日韩免费电影| 日韩欧美亚洲一区二区| 精品欧美乱码久久久久久1区2区| 精品久久一二三区| 国产日韩精品视频一区| 国产精品美女一区二区| 亚洲精选视频在线| 亚洲午夜国产一区99re久久| 麻豆freexxxx性91精品| 国产精品主播直播| 国产精品你懂的在线| 51精品视频一区二区三区| 91.com视频| 欧美精品一区二区三区四区| 日韩欧美中文一区| 精品理论电影在线| 欧美日韩一级视频| 色欲综合视频天天天| 在线亚洲人成电影网站色www| 日韩一区二区三| 91精品久久久久久久99蜜桃| 51精品久久久久久久蜜臀| 欧美日韩成人综合天天影院| 欧美最猛黑人xxxxx猛交| 色婷婷精品久久二区二区蜜臂av | 欧美高清在线一区| 欧美成人欧美edvon| 亚洲欧美日韩人成在线播放| 一区二区三区中文字幕精品精品| 国产米奇在线777精品观看| 丰满白嫩尤物一区二区| 国产一区欧美二区| 亚洲超碰97人人做人人爱| 国产精品丝袜一区| 亚洲精品国产第一综合99久久| 亚洲国产日韩一区二区| 99免费精品在线| 免费在线观看成人| 麻豆精品视频在线观看视频| 亚洲一级二级在线| 国产原创一区二区| 亚洲综合激情网| 亚州成人在线电影| 成人综合婷婷国产精品久久| 欧美午夜精品一区二区三区| 国产日韩欧美精品在线| 天堂成人免费av电影一区| 国产不卡在线播放| 911精品国产一区二区在线| 中文字幕乱码日本亚洲一区二区| 首页欧美精品中文字幕| a4yy欧美一区二区三区| 日韩欧美精品在线| 亚洲综合在线五月| 国产a视频精品免费观看| 欧美精品第1页| 亚洲免费在线视频一区 二区| 国产一级精品在线| 欧美酷刑日本凌虐凌虐| 亚洲精品日韩综合观看成人91| 国产一区二区在线看| 欧美日韩成人综合| 亚洲美女视频一区| 成人精品免费视频| 久久综合一区二区| 亚洲成人资源网| 欧美在线啊v一区| 国产精品久久久久久久久果冻传媒| 国产真实精品久久二三区| 欧美丰满一区二区免费视频| 一区二区成人在线观看| 波多野结衣精品在线| 久久精品亚洲精品国产欧美kt∨| 人人超碰91尤物精品国产| 欧美日韩专区在线| 亚洲精品久久嫩草网站秘色| 99久久免费精品高清特色大片| 国产欧美一区二区三区在线看蜜臀| 精品一区二区免费在线观看| 精品久久久久av影院| 麻豆国产欧美一区二区三区| 欧美一二三区在线| 日韩中文字幕一区二区三区| 欧美精品在欧美一区二区少妇| 一区二区视频在线看| 91久久免费观看| 夜夜操天天操亚洲| 欧美少妇xxx| 午夜视频久久久久久| 欧美三片在线视频观看| 亚洲大片在线观看| 91精品一区二区三区久久久久久| 青青草国产精品亚洲专区无| 日韩欧美一区电影| 国精产品一区一区三区mba桃花| 欧美精品一区二区三| 国产精品一级二级三级| 国产精品私房写真福利视频| 91日韩精品一区| 亚洲一区成人在线| 欧美一区二区精品| 国产精品一区二区久久精品爱涩 | 亚洲人成亚洲人成在线观看图片| 成人午夜电影小说| 亚洲欧美怡红院| 欧洲一区二区三区免费视频| 午夜影院久久久| 日韩精品一区二区三区在线播放 | 成人永久免费视频| 中文字幕视频一区| 在线观看一区日韩| 奇米影视7777精品一区二区| 精品久久人人做人人爰| 成人黄色片在线观看| 亚洲免费av高清| 欧美一区二区在线不卡| 国产乱淫av一区二区三区| 国产精品久久免费看| 青青草原综合久久大伊人精品 | 精品乱码亚洲一区二区不卡| 99精品1区2区| 国产ts人妖一区二区| 久久精品国内一区二区三区| 免费精品视频最新在线| 欧美aⅴ一区二区三区视频| 秋霞电影一区二区| 黄网站免费久久| 国产一区二区三区蝌蚪| 国产一区二区精品久久| 国产综合成人久久大片91| 国产精华液一区二区三区| 国产精品18久久久久久久久久久久 | 日韩激情一二三区| 欧美本精品男人aⅴ天堂| 精品少妇一区二区三区 | 欧美性色欧美a在线播放| 亚洲动漫第一页| 欧美亚洲图片小说| 国产精品成人免费在线| 欧美日韩国产系列| 国产+成+人+亚洲欧洲自线| 亚洲综合av网| 国产三级三级三级精品8ⅰ区| 欧美这里有精品| 国产成人h网站| 免费美女久久99| 亚洲欧美电影一区二区| www一区二区| 欧美人牲a欧美精品| 99久久精品国产毛片|