快速业务通道

Java中使用Draw2D和SWT绘图 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
个 NodeList 都包含一个用于特殊级数的 Node 的列表。每个 Node 都保存着关于应该在什么地方绘制 X 坐标和 Y 坐标的信息。函数 getXCoordinates() 和 getYCoordinates() 分别用于检索 X 坐标值和 Y 坐标值。使用步骤 2 中的相同算法,这些函数也可以内部地将数据值按比例从一个范围缩放到另一个范围。

每个 EdgeList 都包含一个用于特殊级数的 Edges 的列表。每个 Edge 的左右端上都分别有一个 Node。

清单 6. populateNodesAndEdges() 函数

private void populateNodesAndEdges(){    _seriesScaledValues = new ArrayList(getScaledValues(_seriesData));   _nodeLists = new ArrayList();   _edgeLists = new ArrayList();   for(int i=0; i<_numSeries; i++){   _nodeLists.add(new NodeList());// one NodeList per series.   _edgeLists.add(new EdgeList());// one EdgeList per series.   }   //populate all NodeLists with the Nodes.   for(int i=0; i<_numSeries; i++){//for each series   double data[] = (double[])_seriesData.get(i);//get the series   int xCoOrds[] = getXCoordinates(_seriesData);   int yCoOrds[] = getYCoordinates(i, data);   //each NodeList has as many Nodes as points in a series   for(int j=0; j<data.length; j++){    Double doubleValue = new Double(data[j]);    Node node = new Node(doubleValue);    node.x = xCoOrds[j];    node.y = yCoOrds[j];    ((NodeList)_nodeLists.get(i)).add(node);   }   }   //populate all EdgeLists with the Edges.   for(int i=0; i<_numSeries; i++){   NodeList nodes = (NodeList)_nodeLists.get(i);   for(int j=0; j<nodes.size()-1; j++){    Node leftNode = nodes.getNode(j);    Node rightNode = nodes.getNode(j+1);    Edge edge = new Edge(leftNode,rightNode);    edge.start = new Point(leftNode.x, leftNode.y);    edge.end = new Point(rightNode.x, rightNode.y);    ((EdgeList)_edgeLists.get(i)).add(edge);   }   }   int breakpoint = 0; }

Java中使用Draw2D和SWT绘图(6)

时间:2011-03-05

一旦函数 populateNodesAndEdges() 完成了它的使命,为所有将要绘制的级数创建了 NodeLists 和 EdgeLists,另一个函数 drawDotsAndConnections() 就开始为每个 Node 绘制一个 Dot 图形,并为每个 Edge 绘制一个 PolylineConnection 图形。

清单 7. drawDotsAndConnections()、drawNode() 和 drawEdge() 函数

private void drawDotsAndConnections(IFigure contents, DirectedGraph graph){    for (int i = 0; i < graph.nodes.size(); i++) {      Node node = graph.nodes.getNode(i);      drawNode(contents, node);    }    for (int i = 0; i < graph.edges.size(); i++) {      Edge edge = graph.edges.getEdge(i);      drawEdge(contents, edge);    } } private void drawNode(IFigure contents, Node node){   Dot dotFigure = new Dot();   node.data = dotFigure;   int xPos = node.x;   int yPos = node.y;   contents.add(dotFigure);   contents.setConstraint(dotFigure, new Rectangle(xPos,yPos,-1,-1)); } private void drawEdge(IFigure contents, Edge edge){    PolylineConnection wireFigure = new PolylineConnection();   //edge.source is the Node to the left of this edge    EllipseAnchor sourceAnchor = new EllipseAnchor((Dot)edge.source.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号