使用进行桌面程序开发五绘图

使用进行桌面程序开发五绘图

ID:18802728

大小:220.00 KB

页数:11页

时间:2018-09-24

使用进行桌面程序开发五绘图_第1页
使用进行桌面程序开发五绘图_第2页
使用进行桌面程序开发五绘图_第3页
使用进行桌面程序开发五绘图_第4页
使用进行桌面程序开发五绘图_第5页
资源描述:

《使用进行桌面程序开发五绘图》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、使用EclipseRCP进行桌面程序开发(五):2D绘图看完这篇文章,可以实现如下界面:当我第一次看到RCP的时候,我就梦想着有一天能够用它开发界面华丽的2D和3D程序,经历过前面的探索,今天终于可以揭开2D绘图的神秘面纱。在包资源管理器的插件依赖项中,我们一眼就可以看到org.eclipse.swt.graphics包,毫无疑问,和2D绘图有关的类就在这个包中。还有一个org.eclipse.swt.opengl包也很引人注目,但是里面却只有GLCanvas类和GLData类,怎么也找不到传说中的GL类和GLU类,也许下一篇文章我会写出关于3D的内容,但也许这个计划会夭折。我刚开始发现or

2、g.eclipse.swt.graphics包的时候,要使用包里面的类却不是那么容易。比如,从名称上可以看出Image类是处理图像的,但是它的构造函数无一例外都需要一个Device参数,于是,我迷惑了,Device,我该如何取得?再比如,GC类里面含有各种绘图的方法,但是GC的构造函数需要Drawable参数,那Drawable我又该如何获得呢?于是,我在网上搜索关于SWT2D方面的内容,终于,让我看到了别人这样构造Image和GC:Imageimg=newImage(display,"pic.gif");GCgc=newGC(Image);你能看出什么?为什么display是Device的

3、子类?为什么Image是Drawabe的子类?最简单的办法,使用Eclipse的类层次结构视图查看:高,实在是高,在这里我不得不佩服SWT的设计者,在一开始,他们就把所有的控件都设计为可绘制的,而且使用Device来抽象绘图的设备。从图中可以看出,所有的控件都实现Drawable接口,Image也实现Drawable接口,而Device的子类Display和Printer刚好分别代表了屏幕和打印机。所有的谜团都在这里解决了,我们可以使用任何控件作为GC构造函数的参数来构造GC,然后绘图,而所有需要Device参数的地方,我们可以根据我们需要输出的设备是显示器还是打印机而分别选择Display

4、或Printer。在org.eclipse.swt.widgets包中,有一个Canvas类,不难看出,如果我们要绘图,这个控件是最佳选择了。在下面的代码中,我们可以通过选择不同的菜单,分别绘制椭圆,矩形,填充渐变色的矩形和一个图像,运行效果就是文章开头的图片。视图CanvasView.java 1package cn.blogjava.youxia.views; 2 3import org.eclipse.swt.widgets.Composite; 4import org.eclipse.ui.part.ViewPart; 5import org.eclipse.swt.widgets.

5、Canvas; 6import org.eclipse.swt.SWT; 7import org.eclipse.swt.events.*; 8import org.eclipse.swt.graphics.Image; 9import org.eclipse.ui.PlatformUI;1011public class CanvasView extends ViewPart {1213    public Canvas canvas;14    @Override15    public void createPartControl(Composite parent) {16       

6、 // TODO 自动生成方法存根17        canvas = new Canvas(parent,SWT.NONE);18            }1920    @Override21    public void setFocus() {22        // TODO 自动生成方法存根2324    }2526}27菜单项绘制椭圆DrawOvalAction.java的关键部分: 1public void run(IAction action) { 2        // TODO 自动生成方法存根 3        IViewReference[] vfs = windo

7、w.getActivePage().getViewReferences(); 4        IViewPart vw; 5        for(int i=0; i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。