每一个控件都有一个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.addPaintListener( new PaintListener() {
public void paintControl(PaintEvent e) {
if(image!=null)
e.gc.drawImage(image, 0, 0);
}
} );
2、新建Image,调用canvas.redraw()方法
canvas.redraw();
另外还有一种更加简单的方法可以显示图片,通过设置Label的setImage方法显示图片
label.setImage( new Image(Display.getDefault(), " c:/abc.gif " ));