WEB开发网
开发学院软件开发Java SWT 全接触 阅读

SWT 全接触

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: 类org.eclipse.swt.widgets.Control是可绘制的,所以你可以用像在图像上一样的方式来绘制图形,SWT 全接触(8),而和在图像上绘制所不同的是,如果你使用GC在一个Control上绘制图形,一种方法是绘制多边形矩形来组成所需要的图形,另一种方法就是剪切GC,你需要知道当

类org.eclipse.swt.widgets.Control是可绘制的,所以你可以用像在图像上一样的方式来绘制图形。而和在图像上绘制所不同的是,如果你使用GC在一个Control上绘制图形,你需要知道当操作系统自身要绘制这个control的时候,它将覆盖掉你的改动。所以在一个 Control上绘制图形的正确方法是加入其绘制事件的监听器。监听器类为org.eclipse.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) 


SWT 全接触

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}); 
    } 
  }); 

上一页  3 4 5 6 7 8 9 10  下一页

Tags:SWT 全接触

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接