快速业务通道

SWT全接触 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
se.swt.events.PaintListener,其回调函数的参数是一个 org.eclipse.swt.events.PaintEvent类的实例。这个PaintEvent实例中包含一个GC的引用,你可以向这 个GC发送消息。下面的代码示例说明了如何建立这种类型的绘图:

Shell shell = new Shell(display); shell.addPaintListener(new PaintListener(){      public void paintControl(PaintEvent e){        Rectangle clientArea = shell.getClientArea();        e.gc.drawLine(0,0,clientArea.width,clientArea.height);      }    }); shell.setSize(150,150) 

3.4 剪切(Clipping)

GC的剪切域是可见绘图发生的部分。在缺省情况下,一个GC是一个被构造的可视部分边界。改变一个 GC的剪切域可以让我们构造出各种图形效果。其中的一个例子是如果你想填充一个缺失了边缘的矩形。一 种方法是绘制多边形矩形来组成所需要的图形,另一种方法就是剪切GC,然后对其剪切部分进行填充。

shell.addPaintListener(new PaintListener() {      public void paintControl(PaintEvent e) {        Rectangle clientArea = shell.getClientArea();        int width = clientArea.width;        int height = clientArea.height;        e.gc.setClipping(20,20,width - 40, height - 40);        e.gc.setBackground(display.getSystemColor(SWT.COLOR_CYAN));        e.gc.fillPolygon(new int[] {0,0,width,0,width/2,height});      }    });

这段代码在Shell上的显示的过程效果如下:

SWT全接触(8)

时间:2011-11-09 IBM 薛笛

3.5 画板(Canvas)

虽然任何Control都可以通过自身的paintEvent来绘制图形,但其子类 org.eclipse.swt.widgets.Canvas 是专门被设计用来进行图形操作的特殊的绘图类。我们既可以使用一 个Canvas,再加入一个绘图监听器来实现绘图,也可以通过继承来建立一个可重用的自定义Control。 Canvas有很多style bit,可以在绘图发生时产生作用。

3.6 绘制直线和图形

我们有很多方法可以在一个GC上画线,包括在两点之间,一系列离散的点之间或一个预定义的图形上 都可以。直线是以GC的前景色来绘制的,我们可以通过GC绘制拥有不同厚度的各式直线。对于一个Paint 事件,GC有着与Control组件一样的属性,即激发事件且缺省的直线样式固定为1个像素宽。

GC.drawLine(int x1, int y1, int x2, int y2);这条语句在可绘制的面板上的两点间花了一条直线 ,起始点为(x1,y1),终止点为(x2,y2)。终止点包含在画好的直线中。如果起始点等于终止点的话,将 会有一个独立的象素点被绘制出来。

GC.drawPolyline(int[] pointArray);这条语句绘制了一系列互相连接的线段,作为参数的数组用于 描述点的位置。语句gc.drawPolyline(new int[] { 25,5,45,45,5,45 });绘制了如下的图形:

GC.drawPolygon(int[] pointArray);与drawPolyline(int[])是类似的,唯一区别在于最后一个点和 低一个点是连接的。 gc.drawPolygon(new int[] { 25,5,45,45,5,45 });将会获得与上图一样的结果。

GC.drawRectangle(int x, int y, int width, int height);这条语句从左上角的(X,Y)点,用参 数中的宽和高画出了一个矩形。gc.drawRectangle(5,5,90,45);将会绘制出如下图形:

GC.drawRoundedRectangle(int x,int y,int width,int height,int arcWidth,int arcHeight);一个 圆矩形与标准矩形的区别就在于其四个角是圆的。圆矩形的每一个角都可以被想象成为1/4个椭圆,并且 arcWidth和arcHeight由完整的椭圆的宽和高决定。gc.drawRoundedRectangle(5,5,90,45,25,15);绘制了 一个

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号