/* * Created on Jan 8, 2010 by Nick * */ package jmsltestsuite; import java.awt.*; import javax.swing.JFrame; import javax.swing.JPanel; public class ScaledDrawingTest extends JPanel { int LINE_INTERVAL = 12; int DRAWING_ANCHOR = 20; int HORIZONTAL_INTERVAL = 20; private final static Stroke stroke = new BasicStroke(1f); static void setupAntiAliasedGraphics(Graphics2D g) { RenderingHints hints = null; hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); hints.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); // System.out.println("1 Score.setupAntiAliasedGraphics() " + // useAntiAliasingHints); g.setRenderingHints(hints); g.setStroke(stroke); } /* * (non-Javadoc) * * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) */ protected void paintComponent(Graphics g) { super.paintComponent(g); setupAntiAliasedGraphics((Graphics2D)g); System.out.println("painting"); for (int z = 0; z < 20; z++) { double zoom = 0.5 + z * 0.1; int x = z * HORIZONTAL_INTERVAL; for (int i = 0; i < 5; i++) { long yLevelDouble = Math.round(DRAWING_ANCHOR + i * LINE_INTERVAL * zoom); int y = (int)(yLevelDouble); // g.drawLine(x, y, x + HORIZONTAL_INTERVAL * 3 / 2, y); } } for (int z = 0; z < 20; z++) { double zoom = 1.05; int x = HORIZONTAL_INTERVAL * z; ((Graphics2D)g).scale(zoom, zoom); for (int i = 0; i < 5; i++) { int y = (int)(DRAWING_ANCHOR + i * LINE_INTERVAL); g.setColor(Color.black); g.drawLine(x, y, x + HORIZONTAL_INTERVAL * 2 , y); // g.setColor(Color.red); // g.drawRect(10, 20, 10, 10); } } } public static void main(String[] args) { JFrame f = new JFrame(); ScaledDrawingTest t = new ScaledDrawingTest(); t.setPreferredSize(new Dimension(640, 480)); f.add(t); f.pack(); f.setVisible(true); } }