亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

詳解通過變換矩陣實現canvas的縮放功能

2024-08-26 00:21:17
字體:
來源:轉載
供稿:網友

這篇文章主要介紹一種通過設置canvas的變換矩陣來實現canvas的縮放。

第一步就是監聽鼠標的滾輪事件,在滾輪事件中根據鼠標的滾動以及基于前一次的變換,重新設置context的縮放和平移,核心代碼如下:

 let delta = this.deltaInst; delta.bind('zoom', (data) => { delta._transform.scale.forEach((s, i) => {   delta._transform.scale[i] *= data.delta > 0? 2 : 1/2; }); let offsetX = data.x - delta._transform.translate[0]; let offsetY = data.y - delta._transform.translate[1]; delta._transform.translate[0] += -(data.delta > 0? 1 : -1/2)*offsetX; delta._transform.translate[1] -=  (data.delta > 0? 1 : -1/2)*offsetY; delta.refreshAll();});

這里假設每次縮放都都放2倍,也可以是其他縮放比例。

第一步根據滾動的方向在當前縮放比的基礎上乘以2或者除以2;

第二步計算平移,基本思路是計算基于新鼠標位置縮放canvas上的點到心位置時,對canvas平移到什么位置是可以達到相同的效果。

下面看一下refreshAll的代碼:

   let ctx = this.context;   let matrix = this.getTransformMatrix();   ctx.save();   ctx.transform(...matrix);   //ctx.translate(...this._transform.translate);   //ctx.scale(...this._transform.scale);   if (!Array.isArray(shapes)) {     shapes = [shapes];   }   shapes.forEach( (shape) => {     shape.render(ctx);   });   ctx.restore();

代碼中首先獲取到基于之前計算的縮放值scale和平移值translate,得到一個變化矩陣 ,然后將矩陣中對應的值傳遞給context的transform方法,對畫布進行給定的變換,之后進行前一次縮放完全一致的繪圖操作,就和已得到縮放后的效果了~~

在上面的代碼中,ctx.transform() 也可以完全用ctx.translate()和ctx.scale()方法代替,如代碼中的注釋部分所示,參數即為前面計算得到的值。

完整代碼可參考github地址: https://github.com/helloweilei/delta

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久999精品免费| 国产91成人在在线播放| 欧美日韩免费看| 国产欧美一区二区三区久久人妖| 日韩黄色高清视频| 国产主播欧美精品| 欧美激情一二区| 欧美激情一区二区三区久久久| 久久精品这里热有精品| 成人欧美在线视频| 亚洲国产另类 国产精品国产免费| 97不卡在线视频| 不卡中文字幕av| 亚洲精品91美女久久久久久久| 91探花福利精品国产自产在线| 欧美在线不卡区| 欧美人成在线视频| 欧美色videos| 色哟哟亚洲精品一区二区| 国产一区二区三区四区福利| 欧美中文字幕在线| 国产精品69久久久久| 日韩精品一二三四区| 久久免费精品日本久久中文字幕| 亚州精品天堂中文字幕| 国产精品美女在线观看| 亚洲国产精久久久久久久| 亚洲自拍小视频| 国产97色在线| 欧美综合国产精品久久丁香| 92国产精品久久久久首页| 亚洲成色999久久网站| 亚洲人成网站免费播放| 成人性教育视频在线观看| 久久精品国产清自在天天线| 欧美日韩高清在线观看| 97**国产露脸精品国产| 精品成人乱色一区二区| 97国产精品免费视频| 日本人成精品视频在线| 亚洲高清免费观看高清完整版| 欧美在线性视频| 国产欧美一区二区| 亚洲精品第一页| 国产成人精品视频| 亚洲天堂精品在线| 91精品视频在线播放| 亚洲精品不卡在线| 一区二区亚洲欧洲国产日韩| 国产精品私拍pans大尺度在线| 欧美在线一区二区视频| 懂色av中文一区二区三区天美| 久久影视电视剧凤归四时歌| 久久久国产精品亚洲一区| 欧美xxxx做受欧美| 俺去了亚洲欧美日韩| 91网站在线免费观看| 欧美老少配视频| 欧美韩国理论所午夜片917电影| 日韩欧美亚洲成人| 精品网站999www| 亚洲美女动态图120秒| 91精品久久久久久| 欧美黄色片免费观看| 欧美极品第一页| 久久精品国产91精品亚洲| 疯狂做受xxxx高潮欧美日本| 最好看的2019的中文字幕视频| 欧美猛少妇色xxxxx| 国产精品成人免费电影| 国产精品老女人视频| 26uuu亚洲伊人春色| 国产精品久久久久久久久影视| 亚洲第一中文字幕| 欧美肥婆姓交大片| 精品国产乱码久久久久久婷婷| 欧美激情国产日韩精品一区18| 欧美激情国产日韩精品一区18| 日韩天堂在线视频| 国产欧美精品xxxx另类| 夜夜躁日日躁狠狠久久88av| 中文字幕亚洲激情| 日韩动漫免费观看电视剧高清| 国产一区二区三区高清在线观看| 日韩电影大全免费观看2023年上| 久久久av亚洲男天堂| 正在播放国产一区| 91精品国产综合久久香蕉922| 国产狼人综合免费视频| 97香蕉超级碰碰久久免费软件| 在线观看欧美成人| 久久久久久久久久婷婷| 国产精品免费观看在线| 色偷偷888欧美精品久久久| 亚洲国产精品久久| 7777kkkk成人观看| 久久久精品免费| 伊人久久久久久久久久久| 亚洲国产成人一区| 中文综合在线观看| 久久久久久久久久久人体| 成人av在线天堂| 91av在线播放视频| 中文字幕亚洲综合久久筱田步美| 亚洲a成v人在线观看| 精品福利视频导航| 91久久精品国产91久久| 国产精品尤物福利片在线观看| 成人疯狂猛交xxx| 亚洲人成在线电影| 久久久国产精品亚洲一区| 日韩在线观看视频免费| 亚洲aⅴ日韩av电影在线观看| 97在线精品视频| 欧美专区中文字幕| 亚洲国产天堂久久综合网| 69影院欧美专区视频| 欧美高清第一页| 国产午夜精品全部视频播放| 欧美精品在线网站| 中文字幕亚洲欧美日韩2019| 亚洲精品美女在线| 97国产成人精品视频| 国产精品久久久久99| 秋霞av国产精品一区| 国产精品免费一区二区三区都可以| 91精品国产九九九久久久亚洲| 国产香蕉97碰碰久久人人| 亚洲精品免费一区二区三区| 国产精品精品久久久久久| 国产精品免费久久久久久| 久久国产精品亚洲| 美女啪啪无遮挡免费久久网站| 亚洲石原莉奈一区二区在线观看| 成人精品一区二区三区电影免费| 国产日韩换脸av一区在线观看| 97久久精品人搡人人玩| 中文字幕亚洲自拍| 国产精品久久色| 精品亚洲一区二区三区| 欧美俄罗斯性视频| 国产综合福利在线| 国产精品久久久久福利| 成人国产精品免费视频| 久久国产精品久久久| 日韩经典第一页| 日韩在线视频网| 亚洲美女在线看| 国产成人精品久久久| 欧美性猛交xxxx黑人| 久久久精品美女| 91精品久久久久久久久| 国内精品久久久久久久久| 欧美性猛交xxxx乱大交| 黑人巨大精品欧美一区二区三区| 久久人人爽亚洲精品天堂| 欧美性受xxxx白人性爽| 久久久国产视频| 日韩欧美在线字幕| 国产精品久久久久久久久久99| 在线观看欧美日韩| 欧美电影免费观看高清| 国产亚洲欧美日韩美女| 亚洲电影第1页|