日期:2014-05-16  浏览次数:20437 次

Extjs之--图片浏览器

1、效果图


2、此实例是在??http://yourgame.iteye.com/blog/477600?基础上进行改进并修改。?

?

3、?js代码

?

var image_window = new Ext.Window({
	id: 'image-window',
	title : '图片浏览',
	width : 750,
	height : 500,
	resizable : false,
	closeAction :'hide',
	layout:'border',
	items:[{
		xtype: 'panel',
		region: 'center',
		layout:'fit',
		bodyStyle : 'background-color:#E5E3DF;',
		frame:false,
		border:false,
		html :'<div id="mapPic"><div class="nav">'
			+'<div class="up" id="up"></div><div class="right" id="right"></div>'
			+'<div class="down" id="down"></div><div class="left" id="left"></div>'
			+'<div class="zoom" id="zoom"></div><div class="in" id="in"></div>'
			+'<div class="out" id="out"></div></div>'
			+'<img id="view-image" src="" border="0" style="cursor: url(images/openhand_8_8.cur), default;" > </div>'
	}],
	buttons: [{
		text: '取消',
		handler: function() {
			image_window.hide();
		}
	}],
	listeners: {
		'show': function(c) {
			pageInit();
		}
	}
});


/**
 * 初始化
 */
function pageInit(){
	var image = Ext.get('view-image');

	if(image!=null){
		Ext.get('view-image').on({
			'mousedown':{fn:function(){this.setStyle('cursor','url(images/closedhand_8_8.cur),default;');},scope:image},
			'mouseup':{fn:function(){this.setStyle('cursor','url(images/openhand_8_8.cur),move;');},scope:image},
			'dblclick':{fn:function(){
				zoom(image,true,1.2);
			}
		}});
		new Ext.dd.DD(image, 'pic');
		
		//image.center();//图片居中
		
		//获得原始尺寸
		image.osize = {
			width:image.getWidth(),
			height:image.getHeight()
		};
	
		Ext.get('up').on('click',function(){imageMove('up',image);}); 		//向上移动
		Ext.get('down').on('click',function(){imageMove('down',image);});	//向下移动
		Ext.get('left').on('click',function(){imageMove('left',image);});	//左移
		Ext.get('right').on('click',function(){imageMove('right',image);});	//右移动
		Ext.get('in').on('click',function(){zoom(image,true,1.5);});		//放大
		Ext.get('out').on('click',function(){zoom(image,false,1.5);});		//缩小
		Ext.get('zoom').on('click',function(){restore(image);});			//还原
	}
};


/**
 * 图片移动
 */
function imageMove(direction, el) {
	el.move(direction, 50, true);
}


/**
 * 
 * @param el 图片对象
 * @param type true放大,false缩小
 * @param offset 量
 */
function zoom(el,type,offset){
	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(
		{
	        height: {to: nheight, from: height},
	        width: {to: nwidth, from: width},
	        left: {by:left},
	        top: {by:top}
        },
        null,      
	    null,     
	    'backBoth',
	    'motion'
	);
}


/**
 * 图片还原
 */
function restore(el) {
	var size = el.osize;
	
	//自定义回调函数
	function center(el,callback){
		el.center();
		callback(el);
	}
	el.fadeOut({callback:function(){
		el.setSize(size.width, size.height, {callback:function(){
			center(el,function(ee){//调用回调
				ee.fadeIn();
			});
		}});
	}
	});
}

?

4、调用该窗体js

image_window.show();
image_window.setTitle('图片预览-' + array[0].pigCode + '[' + picType + ']');
Ext.get('view-image').dom.src = 'upload/' + array[0].picName;

?

说明:在程序的任意处可以直接调用该窗体,只需要将src指向图片地址。

?

5、用到的其他css及image可以从 地址:http://yourgame.iteye.com/blog/477600?下载

?

1 楼 waainli 2012-08-21  
求CSS和image代码。
2 楼 liuxi1024 2012-08-21  
好,我把图片和