最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

canvas實現(xiàn)圖像放大鏡

 更新時間:2017年02月06日 15:51:57   投稿:lijiao  
這篇文章主要為大家詳細(xì)為大家詳細(xì)介紹了canvas實現(xiàn)圖像放大鏡的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

 本文實例為大家分享了canvas實現(xiàn)圖像放大鏡的具體代碼,供大家參考,具體內(nèi)容如下

<!DOCTYPE html> 
<html> 
<head lang="en"> 
  <meta charset="UTF-8"> 
  <title>canvas-放大鏡</title> 
  <style> 
    body{ 
      padding: 0px; 
      margin: 0px; 
    } 
    #canvas{ 
      border: 1px solid red; 
      margin: 100px; 
    } 
  </style> 
</head> 
<body> 
  <canvas id="canvas" width="800px" height="500px"> 
  </canvas> 
  <script> 
    //獲取到canvas元素 
    var canvas = document.getElementById('canvas'); 
    //獲取canvas中的畫圖環(huán)境 
    var context = canvas.getContext('2d'); 
 
    var img = new Image(); 
    img.src = "./image/liuyifei.jpg"; 
 
    window.onload = function(){ 
      //獲取放大鏡 
      getfangdajing(context,canvas,img,150,2); 
    } 
 
    /* 
    *  context:繪制環(huán)境對象, 
    *  element:canvas元素對象 
    *  img:圖片對象 
    *  diameter:放大鏡的大小, 
    *  ratio:圖形的放大比例, 
    * (比例 = 原圖 :鏡中圖像)0<ratio<1縮小圖像,ratio>1放大圖像 
    * */ 
    function getfangdajing(context,element,img,diameter,ratio){ 
      //繪制圖片 
      context.drawImage(img,0,0,element.width,element.height); 
      //鼠標(biāo)在element中移動觸發(fā)事件 
      element.onmousemove = function (e){ 
        context.clearRect(0,0,element.width,element.height); 
        //繪制圖片 
        context.drawImage(img,0,0,element.width,element.height); 
        //解決瀏覽器兼容問題 
        var e = e ? e : window.event; 
        //獲取鼠標(biāo)在element元素中的坐標(biāo)值 
        var cxy = windowToCanvas(element,e.clientX,e.clientY); 
        context.save();//保存當(dāng)前繪制環(huán)境 
        //獲取放大鏡 
        getClip(context,cxy.x,cxy.y,diameter/2); 
        //將內(nèi)容放入到放大鏡中顯示 
        //根據(jù)鼠標(biāo)點(diǎn)的坐標(biāo)值計算出在原圖的坐標(biāo)值 
        var ytx0=img.width/element.width*cxy.x;//計算出鼠標(biāo)在原圖的X坐標(biāo)值 
        var yty0=img.height/element.height*cxy.y//計算出鼠標(biāo)在原圖的Y坐標(biāo)值 
        //(原圖形/顯示圖形比例)* (放大鏡直徑/比例= 鏡中的圖形所占大?。? 原圖要截取的圖像大小 
        var ytclipValueW = img.width/element.width*diameter/ratio;//在原圖截取圖片的寬度 
        var ytclipValueH = img.height/element.height*diameter/ratio;//在原圖截取圖片的寬度 
        //.drawImage(圖像對象,原圖像截取的起始X坐標(biāo),原圖像截取的起始Y坐標(biāo),原圖像截取的寬度,原圖像截取的高度, 
        // 繪制圖像的起始X坐標(biāo),繪制圖像的起始Y坐標(biāo),繪制圖像所需要的寬度,繪制圖像所需要的高度); 
        context.drawImage(img,ytx0-ytclipValueW/2,yty0-ytclipValueH/2,ytclipValueW,ytclipValueH,cxy.x-diameter/2,cxy.y-diameter/2,diameter,diameter); 
        context.restore();//恢復(fù)當(dāng)前保存的繪制環(huán)境 
      } 
    } 
 
    /* 
    * 獲取放大鏡框:進(jìn)行圖層切割 
    * context:繪制環(huán)境對象 
    * x:鼠標(biāo)在畫布中的X坐標(biāo) 
    * y:鼠標(biāo)在畫布中的Y坐標(biāo) 
    * r:放大鏡的直徑 
    * */ 
    function getClip(context,x,y,r){ 
      context.beginPath(); 
      context.arc(x,y,r,0,Math.PI*2,false); 
      context.stroke(); 
      context.clip();//沿形狀切除向外的圖層 
    } 
 
 
    /* 
    * 坐標(biāo)轉(zhuǎn)換:將window中的坐標(biāo)轉(zhuǎn)換到元素盒子中的坐標(biāo),并返回(x,y)坐標(biāo) 
    * element:canvas元素對象 
    * x:鼠標(biāo)在當(dāng)前窗口X坐標(biāo)值 
    * y:鼠標(biāo)在當(dāng)前窗口Y坐標(biāo)值 
    * */ 
    function windowToCanvas(element,x,y){ 
      //獲取當(dāng)前鼠標(biāo)在window中的坐標(biāo)值 
      // alert(event.clientX+"-------"+event.clientY); 
      //獲取元素的坐標(biāo)屬性 
      var box = element.getBoundingClientRect(); 
      var bx = x - box.left; 
      var by = y - box.top; 
      return {x:bx,y:by}; 
    } 
 
  </script> 
</body> 
</html> 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • XML、HTML、CSS與JS的區(qū)別整理

    XML、HTML、CSS與JS的區(qū)別整理

    在BS中,xml,html,css和js我們都學(xué)過,起初分不清這四者的區(qū)別和聯(lián)系,隨著知識的增長,有了一些體會,下面通過本文給大家簡單介紹 XML、HTML、CSS與JS的區(qū)別,需要的朋友參考下
    2016-02-02
  • JS正則表達(dá)式詳解及身份證號碼驗證(簡易版)

    JS正則表達(dá)式詳解及身份證號碼驗證(簡易版)

    在做用戶實名驗證時,常會用到身份證號碼的正則表達(dá)式及校驗方案,下面這篇文章主要給大家介紹了關(guān)于JS正則表達(dá)式及身份證號碼驗證的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • sogou地圖API用法實例教程

    sogou地圖API用法實例教程

    這篇文章主要介紹了C# sogou地圖API用法,包括了各種常用屬性的用法實例,需要的朋友可以參考下
    2014-09-09
  • js簡單實現(xiàn)網(wǎng)頁換膚功能

    js簡單實現(xiàn)網(wǎng)頁換膚功能

    這篇文章主要為大家詳細(xì)介紹了js簡單實現(xiàn)網(wǎng)頁換膚功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • HTML+CSS+JavaScript實現(xiàn)簡單日歷效果

    HTML+CSS+JavaScript實現(xiàn)簡單日歷效果

    這篇文章主要為大家詳細(xì)介紹了HTML+CSS+JavaScript實現(xiàn)簡單日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS數(shù)字精度丟失的原因及解決方案

    JS數(shù)字精度丟失的原因及解決方案

    JS的數(shù)字類型一旦數(shù)字超過限值,JS將會丟失精度,導(dǎo)致前后端的值出現(xiàn)不一致,這篇文章主要給大家介紹了關(guān)于JS數(shù)字精度丟失的原因分析及解決方法,需要的朋友可以參考下
    2022-04-04
  • JS實現(xiàn)仿中關(guān)村論壇評分后彈出提示效果的方法

    JS實現(xiàn)仿中關(guān)村論壇評分后彈出提示效果的方法

    這篇文章主要介紹了JS實現(xiàn)仿中關(guān)村論壇評分后彈出提示效果的方法,實例分析了javascript彈出特效的css與提示框的具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 微信小程序?qū)崿F(xiàn)聊天室功能

    微信小程序?qū)崿F(xiàn)聊天室功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • javascript之彈出窗口居中的代碼

    javascript之彈出窗口居中的代碼

    有時候我們在網(wǎng)頁制作過程中需要彈出窗口,一般情況下,我們更希望窗口可以居中顯示
    2007-08-08
  • JS實現(xiàn)帶有3D立體感的銀灰色豎排折疊菜單代碼

    JS實現(xiàn)帶有3D立體感的銀灰色豎排折疊菜單代碼

    這篇文章主要介紹了JS實現(xiàn)帶有3D立體感的銀灰色豎排折疊菜單代碼,可實現(xiàn)基本的JS響應(yīng)鼠標(biāo)事件動態(tài)展開與折疊菜單欄的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10

最新評論

望奎县| 邳州市| 东乡县| 东源县| 湖北省| 岳阳县| 孝义市| 丹凤县| 丹江口市| 澎湖县| 商洛市| 珠海市| 屏边| 文山县| 太湖县| 陆河县| 容城县| 壤塘县| 佳木斯市| 武鸣县| 克什克腾旗| 宜昌市| 黄大仙区| 潮安县| 揭阳市| 彭州市| 镇远县| 奉贤区| 菏泽市| 达州市| 墨脱县| 崇礼县| 建水县| 广河县| 屏东市| 宕昌县| 彩票| 石楼县| 九龙城区| 阿拉善左旗| 永嘉县|