import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;public class ImageTest { private String fileName = null; private Image image = null; private Canvas canvas; public static void main(String[] args) {
try {
ImageTest window = new ImageTest();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
} public void open() {
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setSize(309, 314);
shell.setText("SWT Application");
shell.open(); Button button_Scan = new Button(shell, SWT.NONE);
button_Scan.setText("浏览");
button_Scan.setBounds(3, 3, 55, 25);
button_Scan.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
FileDialog dlg =new FileDialog(shell, SWT.OPEN);
dlg.setText("Open");
dlg.setFilterNames(new String[]{"图片文件(*.jpg)","图片文件(*.gif)"});
dlg.setFilterExtensions(new String[]{"*.jpg", "*.gif"});
fileName = dlg.open();//取得打开图片的物理地址
if (fileName!=null){
image = new Image(null, fileName);
canvas.redraw();
}
}
}); canvas = new Canvas(shell, SWT.BORDER);
canvas.setBounds(0, 29, 300, 256);
canvas.addPaintListener(new PaintListener(){
public void paintControl(PaintEvent arg0) {
if (image != null) {
arg0.gc.drawImage(image, 0, 0);
}
}
}); shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}这是在网上找的一段代码,但是如果图片过大,就只会显示一部分
怎么样能把图片缩小后再放到image中呢
谢过!
arg0.gc.drawImage(image, 0, 0);
改成
arg0.gc.drawImage(image, 0, 0,300,200);
试试。