快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

小金体育官网充值_酒文化网进入



用 Java绘图不停都吸引着开拓职员的留意。传统上,Java 开拓职员应用 java.awt.Graphics 或 Java 2D API 进行绘图。一些开拓职员以致应用现成的开源对象箱(如 JSci)来绘图。但很多时刻,您的选择被限制在了 AWT 或 Swing 上。为了最大年夜限度地削减对第三方对象箱的依附,或者为了简化绘图根基,可以斟酌应用 Draw2D,并编写自己的代码来制图或绘图。

Draw2D 简介

Draw2D 是一个驻留在 SWT Composite 之上的轻量级窗口小部件系统。一个 Draw2D 实例 由一个 SWT Composite、一个轻量级系统及其内容的图形组成。图形 是 Draw2D 的构建块。关于 Draw2D API 的所有细节,可以从 Draw2D Developer’s Guide 的 Eclipse 赞助文件中找到。由于本文不盘算成为一篇讲述 Draw2D 的教程,以是,为了简便起见,只要您懂得 Draw2D API 可以赞助您在 SWT Canvas 长进行绘图就足够了。您可以直接应用一些标准的图形,比如 Ellip小金体育官网充值se、Polyline、RectangleFigure 和 Triangle,或者,您可以扩展它们来创建自己的图形。此外,一些容器图形,如 Panel,可以充当所有子图形的总容器。

Draw2D 有两个紧张的包:org.eclipse.draw2d.geometry 和 org.eclipse.draw2d.graph,本文中应用了这两个包。org.eclipse.draw2d.geometry 包有一些有用的类,比如 Rectangle、Point 和 PointList,这些类都是自我解释的。另一个包 org.eclipse.draw2d.graph 开拓职员应用的可能不是太多。这个包供给了一些紧张的类,比如 DirectedGraph、Node、Edge、NodeList 和 EdgeList,这些类有助于创建图表。

在本文中,我将解释若何应用 Draw2D 编写代码,赞助您以图形的要领形象化您的数据。我将从一项技巧的描述开始,该技巧将位于某一范围内的数据值(比如,从 0 到 2048)按比例缩放成另一范围内的等效数据值(例如,从 0 到 100)。然后,我将举例阐明若何绘制出随意率性个级数的 X-Y 坐标图,每个级数都包孕一组数据元素。在进修了本文中的观点之后,就可以很轻易地绘制其他类型的图表,比如饼图和条形图。

详细的绘图历程

步骤 1:您想绘制什么样的图形?

显然,您想以图形要领描画来自数据源的数据。以是,您必要那些您想以图形形式形象化的数据。为了简便起见,我应用了一个名为 dataGenerator 的简单函数天生的数据,而不是从 XML 文件或其他一些数据源读取数据,该函数应用了一个 for(;;) 轮回,并以数组列表的形式返复活成的值。

清单 1. 天生一些数据

private ArrayList dataGe小金体育官网充值nerator() {

double series1[] = new double[5];

for(int i=0; i一些新的术语

FigureCanvas

Draw2D 中的 FigureCanvas 是 SWT Canvas 的一个扩展。FigureCanvas 可以包孕 Draw2D 图形。

Panel

Panel 是 Draw2D 中的一个通用容器图形,它可以包孕子图形。您可以向一个 Panel 图形中添加许多图形,然后将这个 Panel 图形供给给 FigureCanvas。

DirectedGraph

DirectedGraph 是一个 2-D 图形,拥有有限数量的 Node,每个 Node 都位于一些 Point 中,相邻的 Node 是经由过程 Edges 彼此连接在一路的。

当您想绘制一架 2-D 飞机上的点时,必须找出每个点的 X 坐标和 Y 坐标。绘图的巧妙之处在于能够将某一个给定命据值从一个范围按比例缩放到另一个范围中,也便是说,假如给定一组值,如 {10,20,30},那么您应该能够确定 2-D 飞机上详细哪些点(X 坐标和 Y 坐标)表示的是 10、20 和 30 这些数据值。

绘制老是在按照某一个限制缩放比例进行的。换句话说,在同一限制区域内,可以绘制随意率性数量的点。由于该区域是固定的,以是您老是可以找到 X 坐标轴的跨度(长度)和 Y 坐标轴的跨度(高度)。X 坐标轴和 Y 坐标轴的跨度只是等式的一部分。另一部分是找出数据值的范围,并根据每个数据值在新范围内的等效值来谋略这些值的坐标。

谋略 X 坐标和 Y 坐标

X 坐标:X 坐标是某一个点间隔原点的水平间隔。谋略元素的数量,然后将 X 坐标轴的跨度分成 n 个区段,此中,n 是给定聚拢中的元素的数量,经由过程这种要领,可以谋略某一聚拢中的所有点的横向坐标。用这种瓜分措施可以得到每个区段的长度。聚拢中的第一个点位于即是区段长度的第一段间隔内。后续的每个点则位于区段长度加上原点到前一个点的间隔的那一段间隔内。

例如,给出一个聚拢 {10,20,30,40},您立即就可以知道要绘制 4 个点,由于聚拢中包孕 4 个元素。以是,应该将 X 坐标轴的跨度分成 4 个相等的区段,每个区段的长度 = 跨度/4。是以,假如 X 坐标轴的跨度是 800,那么区段的长度将是 800/4,即 200。第一个元素(10)的 X 坐标将是 200,第二个元素(20)的 X 坐标将是 400,依此类推。

清单 2. 谋略 X 坐标

private int[] getXCoordinates(ArrayList seriesData){

int xSpan = (int)GraFixConstants.xSpan;

int longestSeries = Utilities.getLongestSeries(seriesData);

int numSegments =

((double[])seriesData.get(longestSeries)).length;

int sectionWidth =

(int)xSpan / numSegments; //want to divide span of xAxis

int xPositions[] =

new int[numSegments]; // will contain X-coordinate of all dots.

for(int i=0; i 2048 / 1024 equals 2.

line 2---> 100 - 0 equals 100.

line 3---> 100 / 2 equals 50, which is the desired scaled value.

步骤 3:您想在哪儿进行绘图?

您还必要进行绘图的地方。可以经由过程扩展 Eclipse ViewPart 和应用 SWT Composite 来创建您自己的视图。此外,也可以应用从 main() 函数中调用的 SWT shell。

在扩展 Eclipse ViewPart 时,至少必须实现两个函数:createPartControl(Composite parent) 和 setFocus()。函数 createPartControl(Composite parent) 是在屏幕上绘制视图时自动调用的。您的兴趣只在所接管的 SWT Composite 上。是以,将它通报给某小金体育官网充值个类,然后经由过程对这个类进行编码来绘制图形。

清单 3. 应用 Eclipse ViewPart 绘图

public class MainGraFixView extends ViewPart{

public void createPartControl(Composite parent) {

//create or get data in an arraylist

ArrayList seriesData = dataGenerator();

//instantiate a plotter, and provide data to it.

DirectedGraphXYPlotter dgXYGraph = new DirectedGraphXYPlotter(parent);

dgXYGraph.setData(seriesData);

dgXYGraph.plot(); //ask it to plot

}

public void setFocus() {

}

}

步骤 4;您必要绘制哪种图形?

一旦拥有了数据以及想用来绘制图形的区域,就必须确定您必要哪种类型的小金体育官网充值可视化。在本文中,我演示了若何编写代码来创建 X-Y 坐标图和线形图。一旦知道了绘制 X-Y 坐标图的技巧,就应该能够绘制出其他图形,比如条形图和饼图。要想更多地懂得 X-Y 坐标图,请参阅我为本文编写的 DirectedGraphXYPlotter 类(拜见所附源代码中的 \src\GraFix\Plo小金体育官网充值tters\DirectedGraphXYPlotter.java)。

步骤 5:创建自己的 X-Y 坐标图

X-Y 坐标图应该能够绘制出 2-D 飞机上的随意率性数量的级数线。每个级数线都应该以图形形式显示出引用 X 和 Y 引用线的那些级数中的每个点的位置。每个点都应该经由过程一条线连接到级数中的下一个点上。经由过程应用表示一个点和一条线的 Draw2D 图形,您应该能够创建这样一个坐标图。例如,为了表示一个点,我经由过程扩展 Ellipse 图形创建了一个 Dot 图形,并应用 PolylineConnection 图形来表示连接线。

Direc

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: