Java2D: Graphen (Börse) zeichen - wie am besten?

acky

Mitglied
hi,
ich stehe vor der aufgaben, einen graphen - ähnlich den börsenwerten, auszugeben.
da jedoch mitunter wenig werte pro grafik vorhanden sind, würde ich
den verlauf gerne ein wenig abrunden!
bisher verbinden ich einfach die werte als linie (line2D.Float).
mit (Quad-/Cubic-)curve2D bekomme ich ja nur eine völlig abgerundete form (oder kann man dort noch was einstellen?)

hat jemand ne idee, wie ich das optisch am besten aufwerte?

thx,
acky
 
Hallo!

Wie wär's denn damit?
Code:
 /**
  * 
  */
 package de.tutorials;
 
 import java.awt.Graphics2D;
 import java.awt.RenderingHints;
 import java.awt.geom.GeneralPath;
 import java.awt.image.BufferStrategy;
 import java.util.Random;
 
 import javax.swing.JFrame;
 
 /**
  * @author Tom
  * 
  */
 public class StockExchangeExample extends JFrame {
 
 	BufferStrategy strategy;
 
 	Runnable runner = new Runnable() {
 		public void run() {
 			int[] stockChartFlow;
 
 			final int STOCK_CHART_FLOW_MAX_BOUND = 100;
 
 			final Random rnd = new Random();
 
 			stockChartFlow = new int[STOCK_CHART_FLOW_MAX_BOUND];
 
 			int currentStockChartFlowPosition = 0;
 
 			while (true) {
 
 				currentStockChartFlowPosition++;
 
 				stockChartFlow[currentStockChartFlowPosition
 		    			% STOCK_CHART_FLOW_MAX_BOUND] = rnd.nextInt(100);
 
 				GeneralPath path = new GeneralPath();
 				path.moveTo(0.F, 150.F);
 
 				for (int x = 0; x < stockChartFlow.length; x++) {
 					int y = stockChartFlow[x];
 					path.lineTo(x * 4, 150 + y);
 					path.moveTo(x * 4, 150 + y);
 				}
 
 		    	Graphics2D g = (Graphics2D) strategy.getDrawGraphics();
 				g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
 		    		    RenderingHints.VALUE_ANTIALIAS_ON);
 				g.clearRect(0, 0, 400, 300);
 				g.draw(path);
 
 				g.dispose();
 				strategy.show();
 
 				try {
 					Thread.sleep(50L);
 				} catch (InterruptedException e) {
 					e.printStackTrace();
 				}
 			}
 		}
 	};
 
 	public StockExchangeExample() {
 		super("StockExchangeExample");
 		setDefaultCloseOperation(EXIT_ON_CLOSE);
 		setSize(400, 300);
 		setVisible(true);
 		createBufferStrategy(2);
 		strategy = getBufferStrategy();
 		new Thread(runner).start();
 	}
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		new StockExchangeExample();
 	}
 }
Du könntest der Graphics2D -Instanz auch ein entsprechend konfiguriertes BasicStroke unterschieben ...

Gruß Tom
 

Neue Beiträge

Zurück