SWT的字体(Font)、颜色(Color)、图像(Image)和绘图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SWT的字体(Font)、颜⾊(Color)、图像(Image)和绘图下⾯⼀个例⼦展⽰了Font、Color、Image 以及绘图的基本内容。
1. import org.eclipse.swt.SWT;
2. import org.eclipse.swt.events.PaintEvent;
3. import org.eclipse.swt.events.PaintListener;
4. import org.eclipse.swt.graphics.Font;
5. import org.eclipse.swt.graphics.Image;
6. import yout.FillLayout;
7. import org.eclipse.swt.widgets.Canvas;
8. import org.eclipse.swt.widgets.Display;
9. import org.eclipse.swt.widgets.Shell;
10.
11.
12. public class CanvasSample {
13. private Image image = null;
14. private Shell shell = null;
15. private Canvas canvas = null;
16.
17. public CanvasSample(){
18. createContent();
19. }
20.
21. public void createContent(){
22. shell = new Shell();
23. shell.setLayout(new FillLayout());
24. image = new Image(shell.getDisplay(), getClass().getResourceAsStream('1.gif'));
25. canvas = new Canvas(shell, SWT.NONE);
26. canvas.addPaintListener(new PaintListener(){
27. public void paintControl(PaintEvent e){
28. //绘制图像
29. e.gc.drawImage(image, 10, 10);
30. //绘制椭圆
31. e.gc.drawOval(20, 20, 200, 100);
32. //绘制直线
33. e.gc.drawLine(20,10,100,20);
34.
35. Font font = new Font(e.display, 'Arial', 14, SWT.BOLD | SWT.ITALIC);
36. //绘制字符串
37. e.gc.drawString('This is a String', 30, 20);
38.
39. //设置display前景⾊
40. e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_GREEN));
41. //设置display字体
42. e.gc.setFont(font);
43. //设置display 背景⾊
44. e.gc.setBackground(e.display.getSystemColor(SWT.COLOR_DARK_GRAY));
45. //再绘制字符串
46. e.gc.drawString('This is a String', 30, 50);
47.
48.
49. font.dispose();
50. }
51. });
52. shell.setSize(200, 150);
53. }
54.
55. public Canvas getCanvas(){
56. return canvas;
57. }
58. public void setCanvas(Canvas canvas){
59. this.canvas = canvas;
60. }
61. public Image getImage(){
62. return image;
63. }
64. public void setImage(Image image){
65. this.image = image;
66. }
67. public Shell getShell(){
68. return shell;
69. }
70. public void setShell(Shell shell){
71. this.shell = shell;
72. }
73. public static void main(String[] args){
74. Display display = Display.getDefault();
75. CanvasSample cSample = new CanvasSample();
76. cSample.getShell().open();
77. while(!cSample.getShell().isDisposed()){
78. if(!display.readAndDispatch())
79. display.sleep();
80. }
81. cSample.getImage().dispose();
82. display.dispose();
83. }
84. }
运⾏如下图所⽰:
该程序画了⼀个图⽚,⼀个椭圆,⼀个直线,⼀个字符串,然后设置前景⾊背景⾊和字体后重新画字符串。
另外,画字符串的⽅法还可以使⽤
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 ⽅法注册绘图监听器。
上⾯的例⼦中就是⽤了这种⽅式。