HTML5中,如何为图片制作放大镜效果?
制作的放大效果我考虑到的方法是将原始绘制到canvas上,然后在对canvas进行局部裁剪最后对裁剪的部分进行放大,这样就可以实现放大镜的效果。
这里我给出一个实现这个想法的示例。该示例实际上就是运用HTML5 canvas中对画布进行裁剪与保存画布状态的相关知识实现的。
上面是给出示例的效果图。这是不是你想要的放大镜效果呢?
下面我们来看下示例代码:在这个示例中当你点击时就会出现上图效果,再一次点击时就变成原始了。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>放大镜</title>
<!—HTML代码设计:一个简单的canvas元素-->
</head>
<body>
<div id="result-stub" class="well hidden">
<canvas id="canvas" width="345" height="345">
<p>你的浏览器不支持canvas元素</p>
</canvas>
</div>
<script>
windowonload=function() {
//获取canvas对象以及对象
var
canvas = documentgetElementById('canvas'),
img = new Image(),
context = null,
dataUrl = null,
//设置一个标记,该标记的作用是控制我们点击canvas时放大镜效果的消失和出现
isMagnified = false,
//init函数只要是在加载时绘制出图形
init = function() {
imgonload = function() {
//绘制原始
contextdrawImage(img, 0, 0);
//将信息转化为二进制信息或者URL信息存储在dataUrl中方便后面调用
dataUrl = canvastoDataURL();
}
imgsrc = 'fist-pump-babyjpg';
//设置标记值
isMagnified = false;
},
//magnify函数的作用是绘制具有放大镜效果的图形
magnify = function() {
//保存当前画布的绘制状态即画布绘制原始的状态。方便我们在后面恢复到绘制原始的状态
contextsave();
//因为放大镜的圆圈和把手是通过canvas绘制的这里设置了一些绘制把手和圆圈的样式属性。
contextlineWidth = 10;// 线条宽度
contextshadowColor = '#000';// 阴影的颜色黑色
contextshadowBlur = 15;// 模糊级别为15
contextshadowOffsetX = 5;// 形状与阴影的水平距离5
contextshadowOffsetY = 5;// 形状与阴影的垂直距离5
//保存画布当前状态即我们设置阴影属性后的状态方便后面使用
contextsave();
//绘制出放大镜把手的图形
contextbeginPath();
contextmoveTo(230, 230);
contextlineCap = 'round';
contextlineWidth = 30;
contextlineTo(285, 285);
contextstroke();
//对进行裁剪,裁剪出的图形是一个圆形。
contextbeginPath();
contextarc(
150,
150,
115,
0,
MathPI 2,
true);
contextclip();
//创建一个新的Image对象,这个Image对象的资源是前面存储在dataUrl中的资源。所以这个Image对象和之前初始化的Image对象是完全一样的。
var magnified = new Image();
magnifiedsrc = dataUrl;
//对Image对象进行放大15倍,并进行绘制。注意此时的画布状态时裁剪为一个圆形的状态,所以这里绘制的也仅仅是中的一个圆形区域。这里为了绘制出中娃娃的脸设置了绘制的有一定的偏移量。
contextscale(15, 15);
contextdrawImage(img, -40, -40);
//调用restore()函数将画布状态恢复到绘制把放大镜把手时的状态,即具有阴影属性
contextrestore();
//绘制放大镜的圆圈,即绘制刚刚我们裁剪出来的边框。这样刚刚裁剪出来的圆形图形就会正好处于放大镜的圆圈中。
contextarc(
150,
150,
115,
0,
MathPI 2,
true);
contextstroke();
//重置画布,将画布恢复到绘制元素的状态,以方便绘制出放大效果后,再次点击是绘制原始。
contextrestore();
//设置标记值,实现点击后放大效果消失。
isMagnified = true;
};
//加载初始化代码,即当运行页面时会在页面绘制出一个原始图像
init();
//监听画布的点击事件,当点击页面的图像时会根据标记的值来进行判断是否对画布进行方大处理
$('canvas')click(function() {
if (isMagnified) {
init();//绘制原始图像
}
else {
magnify();//绘制放大的图像
}
});
}
</script>
<script src="jqueryjs"></script>
</body>
</html>
对于这些知识在一个叫秒秒学的教程网站上有相关的学习资料,有兴趣的可以自己去看看,希望对你有帮助。
1,打开手机微信app,在主界面中,点击右上角的放大镜图标,进入搜索 *** 作,如图所示。
2,在搜索栏中输入“京东快递”,点击栏目中的搜一搜后,找到“京东快递”的小程序,并点击进入。
3,首次使用需要进行登录 *** 作,点击登录,进行微信授权允许,地理位轩允许即可。
4,小程序会自动定位到当前位置,但仍需要补充寄件人的姓名和手机号,进入到我--寄件人地址簿。
5,填写相对应的信息。
6,收件地址一般会自动获取京东的收货地址,也需要自己进行添加需要收件的地址。
7,最后选择寄件方式选为上门取件或自送服务点,若选择为上门取件可以设置上门时间、重量,还可以选择保价、物品类型等等,就可以点击下单。
京东商城里面商品的放大镜的复制到电脑里的两种方法:1,对网页点右键,查看源文件有地址的。
2,用迅雷右键下载全部链接,然后选择格式选JPG,就可以下载下来的。分类: 电脑/网络 >> 软件 >> 多媒体软件
问题描述:
请问?用flash,如何实现放大镜效果,
解析:
二、建立四个层,如下图所示
详细说明:在该教程中,要想通过下面的AS语句实现预览中的效果,需要设置四处坐标为(0,0)。
(1)分别设置圆、四倍图像在本元件(mask,large)中的X、Y坐标为(0,0)。如图:
(2)将大小两个在场景上的位置坐标设定为(0,0),如图:
三、填写AS
算法讲解:
mask_y=_ymouse-[mask圆的半径]和mask_x=_xmouse-[mask圆的半径]用来实现遮照圆随着鼠标的移动而移动,同时将鼠标指针定位于遮照圆mask的中心点。原理解释如图:
如果该圆在元件中的X,Y坐标在圆的中心点上,则不需要减去r,代码修改为:mask_x=_xmouse;mask_y=_ymouse;
large_x=[1-放大倍数]_xmouse和large_y=[1-放大倍数]_ymouse用来实现大随着鼠标的移动而移动,它的坐标是鼠标坐标的[1-放大倍数]倍。原理如图:
0条评论