每一个控件都有一个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();
就可以实现在点击按钮时更换图片了。