SWT 的字体(Font)、颜色(Color)、图像(Image)和绘图

下面一个例子展示了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 方法注册绘图监听器。上面的例子中就是用了这种方式。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值