當前位置:編程學習大全網 - 編程語言 - 如何在HTML5中制作放大鏡效果?

如何在HTML5中制作放大鏡效果?

我考慮的做圖片放大效果的方法是,先在畫布上畫原圖,然後局部裁剪畫布,最後放大裁剪的部分,這樣就可以實現放大鏡效果。

這裏我舉壹個例子來實現這個想法。這個例子其實是用HTML5?實現了在畫布中裁剪畫布和保存畫布狀態的知識。

以上是舉例的效果圖。這就是妳想要的放大鏡效果嗎?

我們來看壹下樣例代碼:在這個例子中,當妳點擊圖片時,圖片會出現上面的效果,當妳再次點擊時,它會變成原來的圖片。

& lt!DOCTYPE html & gt

& lthtml & gt

& lthead & gt

& ltmeta charset="utf-8 " >

& lttitle & gt放大器

& lt!—HTML代碼設計:壹個簡單的畫布元素-->;

& lt/head & gt;

& ltbody & gt

& ltdiv id = " result-stub " class = " well hidden " >

& ltcanvas id = " canvas " width = " 345 " height = " 345 " >

& ltp & gt您的瀏覽器不支持畫布元素

& lt/canvas & gt;

& lt/div & gt;

& lt腳本& gt

window.onload=function() {

//獲取畫布對象和圖片對象。

定義變量

canvas = document . getelementbyid(' canvas '),

img = new Image(),

上下文=空,

dataUrl = null,

//設置壹個標記來控制我們在畫布上點擊時放大鏡效果的消失和出現。

isMagnified = false,

//init函數只要在圖片加載時畫圖即可。

init = function() {

img.onload = function() {

//畫原圖

context.drawImage(img,0,0);

//將圖片信息轉換成二進制信息或者將URL信息存儲在dataUrl中,以供以後調用。

data URL = canvas . toda taurl();

}

img . src = ' fist-pump-baby . jpg ';

//設置標記值

isMagnified = false

},

//magnify函數用於繪制具有放大鏡效果的圖形?

放大鏡= function() {

//保存當前畫布的繪制狀態,即畫布繪制原圖的狀態。方便我們以後回到畫原圖的狀態。

context . save();

//因為放大鏡的圓圈和手柄是用畫布繪制的,所以這裏設置了壹些繪制手柄和圓圈的樣式屬性。

context . line width = 10;//?線條寬度

context.shadowColor = ' # 000//?陰影的顏色是黑色的。

context . shadow blur = 15;//?模糊等級為15。

context . shadowoffsetx = 5;//?形狀和陰影之間的水平距離5

context . shadowoffsety = 5;//?形狀和陰影之間的垂直距離5

//保存畫布的當前狀態,即我們設置shadow屬性後的狀態,以備後用。

context . save();?

//畫出放大鏡手柄的圖形。

context . begin path();

context.moveTo(230,230);

context.lineCap = ' round

context.lineWidth = 30

context.lineTo(285,285);

context . stroke();

//切圖,切出來的圖形是壹個圓。

context . begin path();

上下文. arc(

150,

150,

115,

0,

數學。PI * 2,

真);

context.clip()。

//創建新的圖像對象。此圖像對象的圖像資源是先前存儲在dataUrl中的圖像資源。所以這個圖像對象和之前初始化的圖像對象完全壹樣。

var magnified =新圖像();

magnified.src = dataUrl

//將圖像對象放大1.5倍並繪制。註意,此時的畫布狀態被切割成圓形狀態,所以這裏畫的只是圖中的圓形區域。這裏為了畫出畫面中娃娃的臉,對畫出的畫面設置了壹定的偏移量。

context.scale(1.5,1.5);

context.drawImage(img,-40,-40);

//調用restore()函數,將畫布狀態恢復到畫放大鏡手柄時的狀態,即具有陰影屬性。

context . restore();

//畫出放大鏡的圓圈,也就是畫出我們剛剛裁剪出來的圖片的邊框。這樣,剛剛切出的圓形圖形就正好在放大鏡的圓圈內。

上下文. arc(

150,

150,

115,

0,

數學。PI * 2,

真);

context . stroke();

//重置畫布,將畫布恢復到繪制元素圖片的狀態,從而繪制放大的效果。再次點擊是,繪制原圖。

context . restore();

//設置標簽值,實現點擊後放大效果消失。

isMagnified = true

};

//加載初始化代碼,即當頁面運行時,會在頁面上繪制壹個原始圖像。

init();

//監控畫布的click事件。當點擊頁面的圖像時,它會根據標簽的值判斷是否在畫布上進行正方形處理。

$('canvas ')。單擊(函數(){

如果(有意義){

init();//繪制原始圖像

}

否則{

magnify();//繪制放大的圖像

}

});

}

& lt/script & gt;

& ltscript src = " jquery.js " & gt& lt/script & gt;

& lt/body & gt;

& lt/html & gt;

對於這些知識,在壹個叫Secondology的教程網站上有相關的學習資料。有興趣的可以自己去看看,希望能幫到妳。

  • 上一篇:德州 圖形計算器
  • 下一篇:區域變量與變差函數
  • copyright 2024編程學習大全網