国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

canvas實(shí)現(xiàn)鼠標(biāo)滾輪滾動(dòng)縮放畫(huà)布

這篇具有很好參考價(jià)值的文章主要介紹了canvas實(shí)現(xiàn)鼠標(biāo)滾輪滾動(dòng)縮放畫(huà)布。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

const canvas = document.createElement('canvas')
canvas.width = 400
canvas.height = 400
canvas.className = 'main_canvas'
document.body.appendChild(canvas)
const ctx = canvas.getContext('2d')

const info = {
  offset: {x: 0, y: 0},
  scale: 1,
  scaleStep: 0.1,
  minScale: 0.5,
  maxScale: 2
}

// 獲取鼠標(biāo)在canvas畫(huà)布上的坐標(biāo)
const getCanvasPostion = (e) => {
  return {
    x: e.offsetX,
    y: e.offsetY,
  }
}

//計(jì)算呢兩點(diǎn)之間的距離
const getDistance = (p1, p2) => {
  return Math.sqrt((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2)
}

//更新畫(huà)布
const updateCanvas = () => {
  const backgroundImage = new Image() // 創(chuàng)建Image對(duì)象
  backgroundImage.src = 'https://ts1.cn.mm.bing.net/th/id/R-C.66d7b796377883a92aad65b283ef1f84?rik=sQ%2fKoYAcr%2bOwsw&riu=http%3a%2f%2fwww.quazero.com%2fuploads%2fallimg%2f140305%2f1-140305131415.jpg&ehk=Hxl%2fQ9pbEiuuybrGWTEPJOhvrFK9C3vyCcWicooXfNE%3d&risl=&pid=ImgRaw&r=0' //設(shè)置圖片路徑
  backgroundImage.onload = function(){
    console.log('圖片加載完成');
    ctx.drawImage(backgroundImage, 0, 0, canvas.width, canvas.height)  //繪制背景圖片
  }
}

updateCanvas()

//監(jiān)聽(tīng)滾輪滾動(dòng)縮放畫(huà)布
canvas.addEventListener('wheel', (e) => {
  e.preventDefault()
  ctx.clearRect(0, 0, canvas.width, canvas.height)
  const canvasPosition = getCanvasPostion(e)  //獲取畫(huà)布上的事件坐標(biāo)
  console.log(canvasPosition)
  const realCanvasPosition = { //鼠標(biāo)在畫(huà)布上的坐標(biāo)
    x: canvasPosition.x - info.offset.x,
    y: canvasPosition.y - info.offset.y
  }
  // 放縮時(shí)產(chǎn)生的偏移量
  const deltaX = realCanvasPosition.x / info.scale * info.scaleStep
  const deltaY = realCanvasPosition.y / info.scale * info.scaleStep
  if (e.wheelDelta > 0 && info.scale < info.maxScale) {
    console.log('上滾');
    info.offset.x  -= deltaX
    info.offset.y  -= deltaY
    info.scale += info.scaleStep
  }else if (e.wheelDelta <= 0 && info.scale > info.minScale){
    console.log('下滾');
    info.offset.x  += deltaX
    info.offset.y  += deltaY
    info.scale -= info.scaleStep
  }
  ctx.setTransform(info.scale, 0, 0, info.scale, info.offset.x, info.offset.y)
  updateCanvas()
})

canvas實(shí)現(xiàn)鼠標(biāo)滾輪滾動(dòng)縮放畫(huà)布效果文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-758878.html

到了這里,關(guān)于canvas實(shí)現(xiàn)鼠標(biāo)滾輪滾動(dòng)縮放畫(huà)布的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue實(shí)現(xiàn)簡(jiǎn)單的鼠標(biāo)拖拽橫向滾動(dòng)和 鼠標(biāo)滾輪橫向滾動(dòng)

    第一種,按住鼠標(biāo)拖拽滾動(dòng) 以下代碼項(xiàng)目中直接使用即可,此種方法是通過(guò)鼠標(biāo)拖拽進(jìn)行滾動(dòng),滑動(dòng)滾輪無(wú)效果。 當(dāng)然快捷鍵,shift+鼠標(biāo)滾輪可以控制橫向滾動(dòng),對(duì)用戶來(lái)說(shuō)體驗(yàn)不友好。 css代碼 第二種方法是通過(guò)鼠標(biāo)的滾輪進(jìn)行滾動(dòng) css代碼

    2024年02月11日
    瀏覽(24)
  • unity3D 鼠標(biāo)滾輪實(shí)現(xiàn)物體的大小縮放

    鼠標(biāo)滾輪響應(yīng)函數(shù)是Input.GetAxis(\\\"Mouse ScrollWheel\\\"),函數(shù)返回值類型是float,向前滾是返回正數(shù),向后滾是返回負(fù)數(shù),且鼠標(biāo)滾輪滑動(dòng)單次函數(shù)返回值為0.1 利用返回值修改模型transform.localscale,實(shí)現(xiàn)模型縮放 鼠標(biāo)滾輪一直向后滾,會(huì)看見(jiàn)模型逐漸變小,當(dāng)變到很小到消失的時(shí)候,

    2024年02月08日
    瀏覽(96)
  • 什么?CSS 能實(shí)現(xiàn)鼠標(biāo)滾輪的橫向滾動(dòng)?

    什么?CSS 能實(shí)現(xiàn)鼠標(biāo)滾輪的橫向滾動(dòng)?

    再次考驗(yàn)?zāi)愕腸ss功底,這樣的橫向平滑滾動(dòng)效果,只用css就可以實(shí)現(xiàn),想不想來(lái)挑戰(zhàn)一下? 看到這個(gè)效果同學(xué)們腦子里第一個(gè)想到的是什么?監(jiān)聽(tīng)鼠標(biāo)的滾輪事件嗎?其實(shí)也可以實(shí)現(xiàn)但是非常的麻煩,因?yàn)橐龅狡交瑵L動(dòng)的話,還要去算這個(gè)事件的觸發(fā)頻率以及滾動(dòng)的距離。

    2024年02月12日
    瀏覽(22)
  • vue滾輪縮放,拖拽滾動(dòng)(不要滾動(dòng)條)

    wheel監(jiān)聽(tīng)滾輪事件,更改div的zoom值區(qū)域縮放 監(jiān)聽(tīng)div的按下,移動(dòng),松開(kāi)事件,移動(dòng)時(shí)計(jì)算偏移量,將需要拖拽滾動(dòng)div的scrollLeft和scrollTop值改變,div的overflow需要hidden,auto等才可以使scrollLeft和scrollTop生效

    2024年02月12日
    瀏覽(15)
  • vue3 實(shí)現(xiàn)門戶網(wǎng)站頁(yè)面鼠標(biāo)滾輪控制頁(yè)面上下滾動(dòng)---類似輪播圖

    案例參考:首頁(yè)_CNESA 儲(chǔ)能研究平臺(tái) //監(jiān)聽(tīng)鼠標(biāo)滾動(dòng)事件 ?window.addEventListener(\\\'mousewheel\\\', debounce(methodB,300), true)||window.addEventListener(\\\"DOMMouseScroll\\\",debounce(methodB,300),false) const debounce = (func, wait) ={ ? ? ? ? let timeout; ? ? ? ? return ?function() { ? ? ? ? ? ? let context = this; ? ? ? ? ? ?

    2024年02月12日
    瀏覽(172)
  • QT學(xué)習(xí)筆記(三)——vs2019+Qt實(shí)現(xiàn)打開(kāi)影像并以鼠標(biāo)為中心用滾輪控制圖片縮放

    QT學(xué)習(xí)筆記(三)——vs2019+Qt實(shí)現(xiàn)打開(kāi)影像并以鼠標(biāo)為中心用滾輪控制圖片縮放

    之前寫(xiě)了一個(gè)博客講怎么顯示一張影像,那個(gè)是基于Qpainter的 今天使用QLabel來(lái)顯示影像,并且用鼠標(biāo)滾輪控制縮放。 關(guān)于圖像的打開(kāi)和顯示,主要參考這個(gè)博客 關(guān)于如何使圖片自適應(yīng)窗口與鋪滿窗口,可以參考這個(gè)博客。 這兩個(gè)博客出自同一作者,都很詳細(xì)。 其中按照第二

    2024年02月09日
    瀏覽(27)
  • Pycharm通過(guò)設(shè)置實(shí)現(xiàn)ctrl+滾動(dòng)鼠標(biāo)滑輪縮放字體大小

    Pycharm通過(guò)設(shè)置實(shí)現(xiàn)ctrl+滾動(dòng)鼠標(biāo)滑輪縮放字體大小

    正常情況下,pycharm里面的字體大小需要設(shè)置才會(huì)改變,而不能直接用ctrl和鼠標(biāo)滑輪來(lái)控制字體大小,這很不方便,這里和大伙分享通過(guò)設(shè)置就能利用ctrl+鼠標(biāo)滑輪改變字體大小的方法。 首先,選擇文件,設(shè)置 ?選擇按鍵映射,然后在搜索框輸入? increase,然后再增大字體大小

    2024年02月11日
    瀏覽(115)
  • Pyqt通過(guò)鼠標(biāo)滾輪進(jìn)行縮放界面

    大多數(shù)視圖類和一部分控件應(yīng)該都有wheelEvent()函數(shù) 首先定義變量,這里為了縮小和放大的比例相同,縮小倍數(shù)為1除以放大倍數(shù)。 重寫(xiě)wheelEvent函數(shù)。 這里的event對(duì)象是個(gè)QWheelEvent事件對(duì)象。 ?event.angleDelta()返回一個(gè)Qpoint對(duì)象,代表滾動(dòng)的數(shù)值。單位是8分之一度。轉(zhuǎn)一下一

    2024年02月12日
    瀏覽(86)
  • Cesium 鼠標(biāo)滾輪事件獲取地圖縮放等級(jí)

    Cesium 監(jiān)聽(tīng)鼠標(biāo)滾輪,滾輪每次滾動(dòng)獲取當(dāng)前地圖瓦片等級(jí)。 靈感來(lái)自:cesium獲取當(dāng)前地圖瓦片縮放級(jí)別_右弦GISer的博客-CSDN博客_cesium 獲取縮放級(jí)別 實(shí)際使用時(shí)體驗(yàn)并不好,最后使用監(jiān)聽(tīng)高度的方法。

    2024年02月11日
    瀏覽(123)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包