SWT中显示图片

如何在SWT中显示图片并调整大小呢?在swt中要显示的图片是不能改变大小的,比如我们用backgroundimage。但是有时我需要把我们想要显示的图片按一定比例自动的适应我们要显示的区域,这是我们要用画图的方法来实现。

 

每一个控件都有一个paintContral的事件,我们可以通过它的事件来画图像。

 

Image有两种获得图片文件的方法如:

final Display display=Display.getDefault();

 

Image image=SWTResourceManager.getImage(aaaa.class,”showpicture.jpg”);

//aaaa是当前文件的名字,showpicture.jpg是与当前文件在同一目录下的图片

//这种发放支持相对路径

//swt在运行时不支持项目内文件的实时更新。

Image image=new Image(display,”C:\\showpicture.jpg”);

       //用这种方法时要把display放到可以引用的地方,不支持相对路径。

 

比如我们现在有一个label和一个button,点击button更换labeld 图片。

Image image=new Image(display,”C:\\a.jpg”);

 

label.addPaintListener(new PaintListener(){

       public void PaintContral(PaintEvent e){

              final Rectangle bounds=image.getBounds();

              int picwidth=bounds.width;        //图片宽

              int picheight=bounds.height;                //图片高

              double H=200;                            //label的高

              double W=150;                           //label的宽

              double ratio=1;                           //缩放比率

              double r1=H/picheight;

              double r2=W/picwidth;

              ratio=Math.min(r1,r2);

              e.gc.drawImage(image,0,0,picwidth,picheight,0,0,

(int)(picwidth*ratio),(int)(picheight*ratio));

//参数1:图片

//2,3:图片要显示相对于要显示区域的坐标,左上角

//4,5:图片宽,高

//6,7:要显示图片的范围,要显示完整图片都为0

//8,9:图片将要显示的宽和高

       }

});

我们只要在点击button的事件中写入:

image=new Image(display,”b.jpg”);

label.redraw();

就可以实现在点击按钮时更换图片了。

 

=========================================================================================

SWT没有提供专门显示图片的控件,不过可以通过Canvas组件实现
1、新建Canvas,并添加PaintListener监听

canvas  =   new  Canvas(composite, SWT.NONE);
canvas.addPaintListener(
new  PaintListener()  {
            
public void paintControl(PaintEvent e) {
                
if(image!=null)
                    e.gc.drawImage(image, 
00);
            }

        }
);

2、新建Image,调用canvas.redraw()方法

Image image  =   new  Image(display, " C:/eclipse/plugins/org.eclipse.platform_2.0.2/eclipse_lg.gif " );
canvas.redraw();



另外还有一种更加简单的方法可以显示图片,通过设置Label的setImage方法显示图片

Label label  =   new  Label(shell, SWT.NONE);
label.setImage(
new  Image(Display.getDefault(),  " c:/abc.gif " ));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值