Graphics
SWT 提供了一个图形引擎,在小部件(widgets)中绘制图形和显示图像。SWT中小部件已经我们提供了绘制图片、文本、和其他数据的功能,所以不需要图形接口编程已经可以实现足够漂亮的功能。但是,如果需要在应用程序中显示自定制图形,或者需要实现一个自定制的小部件,就需要理解SWT 中的基本的绘制工具对象。
1、GC
图像上下文(graphics context),即GC, 是SWT 图形功能的核心类,它的API提供了SWT所有的绘图能力。
GC可以用来在控件(大多数情况)、图片、显示器(display)上绘制图形,或是为打印机提供绘图功能。当在控件上绘图时,使用控件的 panit event 提供的 GC 来实现,如果是在图片、显示器、或打印机上绘图,必须创建一个 GC,并在使用过后销毁它。
一旦获得一个 GC 对象,就可以设置它的属性,例如颜色、线条宽度和字体样式,来控制GC 所绘制的图形的外观。
GC API 参考手册描述了完整的SWT图形绘制功能。
2、字体样式
Font 和 FontData 类用来控制SWT中的字体样式。
FontData 描述字体样式的特征,可以通过设定字体样式的名字、样式和大小来创建一个FontData对象。FontData 包含查询这些属性的API。因为FontData没有占用任何操作系统资源,所以不需要销毁它。
Font类是绘图API中实际表示字体样式的图形对象,可以通过提供一个Display 对象和FontData对象来创建一个Font 对象,可以在Font对象中获取它的具体的FontData数据。Font对象必须在用完后明确地销毁。
3、颜色
颜色类似于字体,你可以通过提供RGB数据值来创建一个具有所希望颜色的 Color 对象,在使用完毕后必须销毁Color 对象。使用Display的方法 getSystemColor(int),可以获得为操作系统平台预先定义系统颜色对象,使用这种方式获得颜色对象
不需要释放。
SWT color model 这篇文章详细地讨论了有关颜色的问题。
4、图像
Image,ImageData 和 ImageLoader 是SWT中操作图形的类。
ImageData 描述图像中的实际的像素,使用 PaletteData 类描述其中具体的颜色值,ImageData 是设备和平台无关的图像的描述数据。ImageLoader 能够以不同文件格式加载和保存 ImageData 对象,SWT目前支持加载和保存图像格式包括BMP(Windows 位图)、JPEG、GIF和PNG。
Image 类是绘图API中实际表示图像的图形对象,可以用下面几种方式创建Image对象:
- 使用 ImageData初始化图像的内容
- 拷贝一个已存在的图像
- 从文件中加载一个图像
shell.addPaintListener (new PaintListener () {
public void paintControl (PaintEvent event) {
GC gc = event.gc;
gc.setForeground (red);
Rectangle rect = event.widget.getClientArea ();
gc.drawRectangle (rect.x + 10, rect.y + 10, rect.width - 20, rect.height - 20);
gc.drawString (resHello.getString("Hello_world"), rect.x + 20, rect.y + 20);
}
});
shell.addPaintListener (new PaintListener () {
public void paintControl (PaintEvent event) {
GC gc = event.gc;
Color red = new Color (event.widget.getDisplay (), 0xFF, 0, 0);
gc.setForeground (red);
Rectangle rect = event.widget.getClientArea ();
gc.drawRectangle (rect.x + 10, rect.y + 10, rect.width - 20, rect.height - 20);
gc.drawString (resHello.getString ("Hello_world"), rect.x + 20, rect.y + 20);
red.dispose ();
}
});