Extjs 查看图片并添加放大缩小功能
2015-04-24 18:00
495 查看
Ext.define("App.view.ImgView", { extend : "Ext.panel.Panel", width:800, height: 740, img_index: 0, layout: 'border', buttonAlign:'center', set_img: function(index) { this.img_index=index; this.up('window').setTitle(this.src[index].name); Ext.getCmp('images-view').getSelectionModel().select(index);
Ext.get(this.img_view_id).dom.src=this.src[index].uri; /* Ext.getCmp(this.id + '_next_btn').disabled = ((this.img_index + offset) == this.src.length - 1) ? true : false; Ext.getCmp(this.id + '_pre_btn').disabled = ((this.img_index + offset) == 0) ? true :
false;*/ Ext.getCmp(this.id + '_next_btn').setDisabled((this.img_index == this.src.length - 1) ? true : false); Ext.getCmp(this.id + '_pre_btn').setDisabled ((this.img_index == 0) ? true : false); }, initComponent: function() { var cmp = this; cmp.img_view_id=this.id
+ '_img'; cmp.isBig=true; this.html = '
'; this.items=[{ xtype:'dataview', region: 'north', id: 'images-view', height:100, split: true, style:"background:#fff", store: cmp.columnStore,
tpl: [ '', '
', '
', '{name:htmlEncode}', '
', '', '
' ], trackOver: true, overItemCls: 'x-item-over', itemSelector: 'div.thumb-wrap', emptyText: 'No images to display', autoScroll : true, listeners:{ selectionchange:function(view ,recs){ cmp.set_img(recs[0].index); //console.log(cmp.img_index); /*Ext.get(cmp.img_view_id).dom.src=recs[0].data.url;
cmp.img_index=recs[0].data.index; cmp.up('window').setTitle(recs[0].data.name);*/ /*view.parent.get('ImgSearch').setSrc(recs[0].data.url); cmp.img_index=recs[0].data.index; */ } }}]; this.buttons = [{ text: "上一张", disabled:true, id: this.id + '_pre_btn', handler:
function() { Ext.getCmp(cmp.id + '_pre_btn').setDisabled(((cmp.img_index -1) == 0) ? true : false); if(cmp.img_index > 0) { cmp.img_index = cmp.img_index-1; cmp.set_img(cmp.img_index); } } },{ text: "下一张", id: this.id + '_next_btn', handler: function() { Ext.getCmp(cmp.id
+ '_pre_btn').setDisabled(((cmp.img_index +1) == cmp.src.length - 1) ? true : false); if(cmp.img_index < cmp.src.length - 1) { cmp.img_index = cmp.img_index+1; cmp.set_img(cmp.img_index); } } },{ text: "放大", handler: function() { cmp.isBig = true; Ext.get(cmp.img_view_id).setStyle({
cursor: 'zoom-in' }); cmp.zoom(Ext.get(cmp.img_view_id), 1.5, true); } },{ text: "缩小", handler: function() { cmp.isBig = false; Ext.get(cmp.img_view_id).setStyle({ cursor: 'zoom-out' }); cmp.zoom(Ext.get(cmp.img_view_id), 1.5, false); } }]; cmp.on('afterrender',cmp.XafterRender);
this.callParent(arguments); }, XafterRender: function() { var $this=this; Ext.get($this.img_view_id).parent = this; new Ext.dd.DD(Ext.get($this.img_view_id), 'pic'); Ext.get($this.img_view_id).on({ 'click': { fn: function() { var isBig=$this.isBig; Ext.get(this).parent.zoom(Ext.get(this),
1.5, isBig); } }, 'contextmenu': { fn: function() { Ext.get(this).parent.zoom(Ext.get(this), 1.5, false); } }, 'mousewheel' : { fn : function(e) { var delta = e.getWheelDelta(); if (delta > 0) { Ext.get(this).parent.zoom(Ext.get(this), 1.5, true); } else {
Ext.get(this).parent.zoom(Ext.get(this), 1.5, false); } } } }); }, //放大、缩小 zoom: function(el, offset, type) { el.setStyle({ cursor: type?'zoom-in':'zoom-out' }); var width = el.getWidth(); var height = el.getHeight(); var nwidth = type ? (width * offset) :
(width / offset); var nheight = type ? (height * offset) : (height / offset); var left = type ? -((nwidth - width) / 2) : ((width - nwidth) / 2); var top = type ? -((nheight - height) / 2) : ((height - nheight) / 2); el.animate({ to: { width: nwidth+'px',
height: nheight+'px' }, left: { by: left+'px' }, top: { by: top+'px' } }, null, null, 'backBoth', 'motion' ); } });
Ext.get(this.img_view_id).dom.src=this.src[index].uri; /* Ext.getCmp(this.id + '_next_btn').disabled = ((this.img_index + offset) == this.src.length - 1) ? true : false; Ext.getCmp(this.id + '_pre_btn').disabled = ((this.img_index + offset) == 0) ? true :
false;*/ Ext.getCmp(this.id + '_next_btn').setDisabled((this.img_index == this.src.length - 1) ? true : false); Ext.getCmp(this.id + '_pre_btn').setDisabled ((this.img_index == 0) ? true : false); }, initComponent: function() { var cmp = this; cmp.img_view_id=this.id
+ '_img'; cmp.isBig=true; this.html = '
'; this.items=[{ xtype:'dataview', region: 'north', id: 'images-view', height:100, split: true, style:"background:#fff", store: cmp.columnStore,
tpl: [ '', '
', '
', '{name:htmlEncode}', '
', '', '
' ], trackOver: true, overItemCls: 'x-item-over', itemSelector: 'div.thumb-wrap', emptyText: 'No images to display', autoScroll : true, listeners:{ selectionchange:function(view ,recs){ cmp.set_img(recs[0].index); //console.log(cmp.img_index); /*Ext.get(cmp.img_view_id).dom.src=recs[0].data.url;
cmp.img_index=recs[0].data.index; cmp.up('window').setTitle(recs[0].data.name);*/ /*view.parent.get('ImgSearch').setSrc(recs[0].data.url); cmp.img_index=recs[0].data.index; */ } }}]; this.buttons = [{ text: "上一张", disabled:true, id: this.id + '_pre_btn', handler:
function() { Ext.getCmp(cmp.id + '_pre_btn').setDisabled(((cmp.img_index -1) == 0) ? true : false); if(cmp.img_index > 0) { cmp.img_index = cmp.img_index-1; cmp.set_img(cmp.img_index); } } },{ text: "下一张", id: this.id + '_next_btn', handler: function() { Ext.getCmp(cmp.id
+ '_pre_btn').setDisabled(((cmp.img_index +1) == cmp.src.length - 1) ? true : false); if(cmp.img_index < cmp.src.length - 1) { cmp.img_index = cmp.img_index+1; cmp.set_img(cmp.img_index); } } },{ text: "放大", handler: function() { cmp.isBig = true; Ext.get(cmp.img_view_id).setStyle({
cursor: 'zoom-in' }); cmp.zoom(Ext.get(cmp.img_view_id), 1.5, true); } },{ text: "缩小", handler: function() { cmp.isBig = false; Ext.get(cmp.img_view_id).setStyle({ cursor: 'zoom-out' }); cmp.zoom(Ext.get(cmp.img_view_id), 1.5, false); } }]; cmp.on('afterrender',cmp.XafterRender);
this.callParent(arguments); }, XafterRender: function() { var $this=this; Ext.get($this.img_view_id).parent = this; new Ext.dd.DD(Ext.get($this.img_view_id), 'pic'); Ext.get($this.img_view_id).on({ 'click': { fn: function() { var isBig=$this.isBig; Ext.get(this).parent.zoom(Ext.get(this),
1.5, isBig); } }, 'contextmenu': { fn: function() { Ext.get(this).parent.zoom(Ext.get(this), 1.5, false); } }, 'mousewheel' : { fn : function(e) { var delta = e.getWheelDelta(); if (delta > 0) { Ext.get(this).parent.zoom(Ext.get(this), 1.5, true); } else {
Ext.get(this).parent.zoom(Ext.get(this), 1.5, false); } } } }); }, //放大、缩小 zoom: function(el, offset, type) { el.setStyle({ cursor: type?'zoom-in':'zoom-out' }); var width = el.getWidth(); var height = el.getHeight(); var nwidth = type ? (width * offset) :
(width / offset); var nheight = type ? (height * offset) : (height / offset); var left = type ? -((nwidth - width) / 2) : ((width - nwidth) / 2); var top = type ? -((nheight - height) / 2) : ((height - nheight) / 2); el.animate({ to: { width: nwidth+'px',
height: nheight+'px' }, left: { by: left+'px' }, top: { by: top+'px' } }, null, null, 'backBoth', 'motion' ); } });
相关文章推荐
- Android基础---WebView添加基本的放大缩小功能以及为图片添加放大缩小功能
- webview中图片加载,添加放大缩小功能
- ImageView+ViewPager+PhotoView实现朋友圈图片点击全屏查看支持放大缩小
- jquery图片查看插件,支持旋转、放大、缩小、拖拽、缩略图(仿qq图片查看)
- jquery图片查看插件,支持旋转、放大、缩小、拖拽、缩略图(仿qq图片查看)
- Android多点触控技术,实现对图片的放大缩小平移,惯性滑动等功能
- js实现图片放大缩小功能后进行复杂排序的方法
- Android图片查看支持双击放大缩小、多点触摸
- 基于RxPaparazzo实现图片裁剪、图片旋转、比例放大缩小功能
- Android中imageView图片放大缩小及旋转功能示例代码
- jquery图片查看插件,支持旋转、放大、缩小、拖拽、缩略图(仿qq图片查看)
- js两只手指控制div图片放大缩小功能
- Android图片查看支持双击放大缩小、多点触摸
- 给图片添加图片水印[可按位置,水印图上放大缩小]
- 图片放大时实现鼠标拖动查看完整图片功能
- jQuery支持图片放大缩小查看效果
- 高仿新浪点击图片放大(可以拖动,动态缩小放大,以及再次点击图片消失和保存图片的功能)
- extjs3.3.0图片放大缩小实现
- iOS-点击图片放大,再次点击返回原视图 类似查看相册的功能
- ExtJs 完美实现图片在Window窗口中通过鼠标滚轮放大缩小以及点击拖拽