這裏我舉壹個例子來實現這個想法。這個例子其實是用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的教程網站上有相關的學習資料。有興趣的可以自己去看看,希望能幫到妳。