課程
/前端開發(fā)
/Html5
/Canvas玩轉(zhuǎn)圖像處理
老師,圖片放大后,怎么實(shí)現(xiàn)上下左右拖動(dòng)呢
2019-09-17
源自:Canvas玩轉(zhuǎn)圖像處理 2-4
正在回答
寫幾個(gè)滑塊控制不同方向超出部分大小,注意這里就不能再使用 drawImageByScale 了,因?yàn)檫@個(gè)函數(shù)是以中心為縮放de。
html代碼,max,value等值隨意。
<input?type="range"?name="range"?id="vertical"?min="0"?max="3.0"?step="0.01"?value="1.5"?class="slider?left">
js代碼:
let?canvas?=?document.querySelector('#canvas'), ????vertical?=?document.querySelector('#vertical'),????//?右側(cè)滑塊 ???slider?=?document.querySelector('#range'); ??? ???... ??? let?scale?=?slider.value; let?exceedInfo?=?{?dx:?0,?dy:?0,?imageWidth:?0,?imageHeight:?0?};???//?縮放后的圖像信息 ... image.onload?=?()?=>?{ ???vertical.onmousemove?=?()?=>?{ ?????const?{?dx,?dy?}?=?exceedInfo; ?????dy?<?0?&&?drawExceedImage(vertical.value);?//?超出的時(shí)候小于0 ???} } //?繪制超出部分 function?drawExceedImage(y)?{ ???context.clearRect(0,?0,?canvas.width,?canvas.height);?//?清空畫布 ???const?{?dx,?imageWidth,?imageHeight?}?=?exceedInfo; ???context.drawImage(image,?dx,?-y,?imageWidth,?imageHeight); } ???????????? function?drawImageByScale(scale)?{ ??... ??if?(dy?<?0)?{ ????let?max?=?Math.abs(dy)?*?2;??//?滑塊的最大值,dy是頂部超出,因?yàn)榭v向只用了一個(gè)滑塊,所以底部?+?頂部?=?*2 ????vertical.max?=?max; ????vertical.value?=?max?/?2;??//?初始值是中間值,表示無translateY ??} ??... ????return?{?dx,?dy,?imageWidth,?imageHeight?} }
一開始是這樣:
這時(shí)候其實(shí)沒有超出,可以隱藏右側(cè)滑塊,我沒寫。
放大后這樣(已經(jīng)在垂直方向超出了):
拖到頂部是這樣:
拖到底部是這樣:
爬動(dòng)的瓜子
舉報(bào)
canvas系列第三課,學(xué)會編寫圖像算法,一起玩轉(zhuǎn)圖像處理吧
1 回答input的value值改變后,圖片不在畫布中心放大,怎么解決?
1 回答放大鏡圖片大小問題
2 回答很奇怪,我的圖片不能放大,也不能縮小
3 回答第一種方法,只出現(xiàn)圖片的左上角部分
1 回答老師,那怎么選擇一個(gè)電腦上的圖片文件,讓它c(diǎn)anvas里顯示出來
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2021-05-31
寫幾個(gè)滑塊控制不同方向超出部分大小,注意這里就不能再使用 drawImageByScale 了,因?yàn)檫@個(gè)函數(shù)是以中心為縮放de。
html代碼,max,value等值隨意。
js代碼:
一開始是這樣:
這時(shí)候其實(shí)沒有超出,可以隱藏右側(cè)滑塊,我沒寫。
放大后這樣(已經(jīng)在垂直方向超出了):
拖到頂部是這樣:
拖到底部是這樣: