真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用canvas怎么實(shí)現(xiàn)一個(gè)放大鏡功能

使用canvas怎么實(shí)現(xiàn)一個(gè)放大鏡功能?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站建設(shè)、色尼網(wǎng)絡(luò)推廣、微信小程序定制開(kāi)發(fā)、色尼網(wǎng)絡(luò)營(yíng)銷(xiāo)、色尼企業(yè)策劃、色尼品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供色尼建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

 1. 什么是離屏技術(shù)?

canvas 學(xué)習(xí)和濾鏡實(shí)現(xiàn) 介紹過(guò) drawImage 接口。除了繪制圖像,這個(gè)接口還可以: 將一個(gè) canvas 對(duì)象繪制到另一個(gè) canvas 對(duì)象上。這就是離屏技術(shù)。

2. 實(shí)現(xiàn)水印和中心縮放

在代碼中,有兩個(gè) canvas 標(biāo)簽。分別是可見(jiàn)與不可見(jiàn)。 不可見(jiàn)的 canvas 對(duì)象上的 Context 對(duì)象,就是我們放置圖像水印的地方。

更多詳解,請(qǐng)看代碼注釋?zhuān)?/p>




  
  Learn Canvas
  


  
    
    
    
  
       window.onload = function () {       var canvas = document.querySelector("#my-canvas")       var watermarkCanvas = document.querySelector("#watermark-canvas")       var slider = document.querySelector("input")       var scale = slider.value       var ctx = canvas.getContext('2d')       var watermarkCtx = watermarkCanvas.getContext("2d")       /* 給第二個(gè)canvas獲取的Context對(duì)象添加水印 */       watermarkCanvas.width = 300       watermarkCanvas.height = 100       watermarkCtx.font = "bold 20px Arial"       watermarkCtx.lineWidth = "1"       watermarkCtx.fillStyle = "rgba(255 , 255 , 255, 0.5)"       watermarkCtx.fillText("=== yuanxin.me ===", 50, 50)       /****************************************/       var img = new Image()       img.src = "./img/photo.jpg"       /* 加載圖片后執(zhí)行操作 */       img.onload = function () {         canvas.width = img.width;         canvas.height = img.height;         drawImageByScale(canvas, ctx, img, scale, watermarkCanvas);         // 監(jiān)聽(tīng)input標(biāo)簽的mousemove事件         // 注意:mousemove實(shí)時(shí)監(jiān)聽(tīng)值的變化,內(nèi)存消耗較大         slider.onmousemove = function () {           scale = slider.value           drawImageByScale(canvas, ctx, img, scale, watermarkCanvas);         }       }       /******************/     }     /**     *     * @param {Object} canvas 畫(huà)布對(duì)象     * @param {Object} ctx     * @param {Object} img     * @param {Number} scale 縮放比例     * @param {Object} watermark 水印對(duì)象     */     function drawImageByScale(canvas, ctx, img, scale, watermark) {       // 圖像按照比例進(jìn)行縮放       var width = img.width * scale,         height = img.height * scale       // (dx, dy): 畫(huà)布上繪制img的起始坐標(biāo)       var dx = canvas.width / 2 - width / 2,         dy = canvas.height / 2 - height / 2       ctx.clearRect(0, 0, canvas.width, canvas.height) // No1 清空畫(huà)布       ctx.drawImage(img, dx, dy, width, height) // No2 重新繪制圖像       if (watermark) {         // No3 判斷是否有水印: 有, 繪制水印         ctx.drawImage(watermark, canvas.width - watermark.width, canvas.height - watermark.height)       }     }   

實(shí)現(xiàn)效果如下圖所示:

使用canvas怎么實(shí)現(xiàn)一個(gè)放大鏡功能

拖動(dòng)滑竿,即可放大和縮小圖像。然后右鍵保存圖像。保存后的圖像,就有已經(jīng)有了水印,如下圖所示:

使用canvas怎么實(shí)現(xiàn)一個(gè)放大鏡功能

3. 實(shí)現(xiàn)放大鏡

在上述中心縮放的基礎(chǔ)上,實(shí)現(xiàn)放大鏡主需要注意以下 2 個(gè)部分:

  • 細(xì)化處理canvas的鼠標(biāo)響應(yīng)事件:滑入、滑出、點(diǎn)擊和松開(kāi)

  • 重新計(jì)算離屏坐標(biāo)(詳細(xì)公式計(jì)算思路請(qǐng)見(jiàn)代碼注釋?zhuān)?/p>

  • 重新計(jì)算鼠標(biāo)相對(duì)于 canvas 標(biāo)簽的坐標(biāo)(詳細(xì)公式計(jì)算思路請(qǐng)見(jiàn)代碼注釋?zhuān)?/p>

代碼如下:




  
  Document
  


  
  
  

看完上述內(nèi)容,你們掌握使用canvas怎么實(shí)現(xiàn)一個(gè)放大鏡功能的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


文章名稱(chēng):使用canvas怎么實(shí)現(xiàn)一個(gè)放大鏡功能
分享路徑:http://weahome.cn/article/gchige.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部