亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

scale(sx,sy)這個方法會移動整個畫布的起始點嗎?

scale(sx,sy)這個方法會移動整個畫布的起始點嗎?

蕭十郎 2022-07-08 15:07:58
例子var c=document.getElementById("myCanvas");var ctx=c.getContext("2d");ctx.strokeRect(5,5,25,15);ctx.scale(2,2);ctx.strokeRect(5,5,25,15);問題來了 scale(sx,sy)sx和sy是像素px嗎還是相對比例?這會改變畫布的位置還是改變畫筆的位置?這個方法會移動整個畫布的起始點嗎?
查看完整描述

1 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

sx和sy是個比例數字,比如設置scale(2,2),是在x方向和y方向都放大了兩倍,出來的效果就是圖像的縮放。畫布的位置并沒有改變。

你這樣理解,scale是把坐標改變了相應的比例。還是以scale(2,2)為例。為了顯示明顯,給段css,

1234var ctx=drawing.getContext("2d");    ctx.strokeRect(20,20,20,20);    ctx.scale(2,2);    ctx.strokeRect(20,20,20,20);

效果如下:

scale(2,2)后,坐標變成了原來的兩倍,所以同樣的坐標圖像的大小變成了之前的兩倍。看坐標,起點同樣是(20,20),但是變換以后變成了右下角,就是(40,40),很明顯,是坐標尺度變了,一格變成了之前的兩格,所以同樣的起點也變成了(40,40)。

如果想要變換起點位置的話,就用translate方法移動原點就行了,比如起點要求不變,就這樣:

12345var ctx=drawing.getContext("2d");    ctx.strokeRect(20,20,20,20);    ctx.translate(-20,-20);    ctx.scale(2,2);    ctx.strokeRect(20,20,20,20);

效果如下:

按要求來就行了。

希望可以幫到你~~~~~


查看完整回答
反對 回復 2022-07-11
  • 1 回答
  • 0 關注
  • 316 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號