下面一个例子展示了Font、Color、Image 以及绘图的基本内容。
- import org.eclipse.swt.SWT;
- import org.eclipse.swt.events.PaintEvent;
- import org.eclipse.swt.events.PaintListener;
- import org.eclipse.swt.graphics.Font;
- import org.eclipse.swt.graphics.Image;
- import org.eclipse.swt.layout.FillLayout;
- import org.eclipse.swt.widgets.Canvas;
- import org.eclipse.swt.widgets.Display;
- import org.eclipse.swt.widgets.Shell;
- public class CanvasSample {
- private Image image = null;
- private Shell shell = null;
- private Canvas canvas = null;
- public CanvasSample(){
- createContent();
- }
- public void createContent(){
- shell = new Shell();
- shell.setLayout(new FillLayout());
- image = new Image(shell.getDisplay(), getClass().getResourceAsStream('1.gif'));
- canvas = new Canvas(shell, SWT.NONE);
- canvas.addPaintListener(new PaintListener(){
- public void paintControl(PaintEvent e){
- //绘制图像
- e.gc.drawImage(image, 10, 10);
- //绘制椭圆
- e.gc.drawOval(20, 20, 200, 100);
- //绘制直线
- e.gc.drawLine(20,10,100,20);
- Font font = new Font(e.display, 'Arial', 14, SWT.BOLD | SWT.ITALIC);
- //绘制字符串
- e.gc.drawString('This is a String', 30, 20);
- //设置display前景色
- e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_GREEN));
- //设置display字体
- e.gc.setFont(font);
- //设置display 背景色
- e.gc.setBackground(e.display.getSystemColor(SWT.COLOR_DARK_GRAY));
- //再绘制字符串
- e.gc.drawString('This is a String', 30, 50);
- font.dispose();
- }
- });
- shell.setSize(200, 150);
- }
- public Canvas getCanvas(){
- return canvas;
- }
- public void setCanvas(Canvas canvas){
- this.canvas = canvas;
- }
- public Image getImage(){
- return image;
- }
- public void setImage(Image image){
- this.image = image;
- }
- public Shell getShell(){
- return shell;
- }
- public void setShell(Shell shell){
- this.shell = shell;
- }
- public static void main(String[] args){
- Display display = Display.getDefault();
- CanvasSample cSample = new CanvasSample();
- cSample.getShell().open();
- while(!cSample.getShell().isDisposed()){
- if(!display.readAndDispatch())
- display.sleep();
- }
- cSample.getImage().dispose();
- display.dispose();
- }
- }
运行如下图所示:
该程序画了一个图片,一个椭圆,一个直线,一个字符串,然后设置前景色背景色和字体后重新画字符串。
另外,画字符串的方法还可以使用
drawString(String string, int x, int y, boolean is Transparent)
来指定文本是否透明显示。透明显示则看不到背景色,而直线显示面板内容。
SWT 的绘图功能是通过 org.eclipse.swt.graphics 包中的GC 类来完成的。任何实现了Drawable 的类都可以进行绘制。通常使用GC 对象有两种用法:
1. 构造GC 对象
GC(Drawable drawable)
GC(Drawable drawable, int style).
其中style 可以为 SWT.LEFT_TO_RIGHT 或 SWT.RIGHT_TO_LEFT 或 SWT.NONE。
2. 在绘图监听器中完成绘制。
控件通过addPaintListener 方法注册绘图监听器。上面的例子中就是用了这种方式。
联系客服