Thanks, that did point me in the right direction. This did the trick: ######################### // zoom it g2.translate(0, -OUT_HEIGHT * (zoom - 1)); g2.scale(1, zoom); #########################
This is my test class if anyone wants to try it out: ######################### /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package trace; import java.awt.Graphics; import java.awt.Graphics2D; import java.io.File; import java.io.IOException; import javax.swing.BoxLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.biojava.bio.chromatogram.Chromatogram; import org.biojava.bio.chromatogram.UnsupportedChromatogramFormatException; import org.biojava.bio.chromatogram.graphic.ChromatogramGraphic; import org.biojava.bio.program.scf.SCF; /** * * @author Daniel Struck */ public class TracePanel_test extends JPanel implements ChangeListener { private final int OUT_HEIGHT = 50; private Chromatogram c; private double zoom; public TracePanel_test(Chromatogram c, double zoom) { this.c = c; this.zoom = zoom; } @Override public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; /* create ChromatogramGraphic */ ChromatogramGraphic gfx = new ChromatogramGraphic(c); gfx.setHeight(OUT_HEIGHT); gfx.setHorizontalScale(1.0f); gfx.setOption(ChromatogramGraphic.Option.USE_PER_SHAPE_TRANSFORM, Boolean.TRUE); // zoom it g2.translate(0, -OUT_HEIGHT * (zoom - 1)); g2.scale(1, zoom); gfx.drawTo(g2); } public static void main(String[] args) { try { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); SCF chroma = SCF.create(new File("someTraceFileSomeWhere.scf")); TracePanel_test test1 = new TracePanel_test(chroma, 1); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); JSlider zoomSlider = new JSlider(JSlider.VERTICAL, 1, 20, 1); zoomSlider.addChangeListener(test1); panel.add(zoomSlider); panel.add(test1); frame.getContentPane().add(panel); frame.setSize(800, 80); frame.setVisible(true); } catch (IOException ex) { ex.printStackTrace(); } catch (UnsupportedChromatogramFormatException ex) { ex.printStackTrace(); } } public void stateChanged(ChangeEvent e) { JSlider source = (JSlider) e.getSource(); zoom = source.getValue(); this.repaint(); } } ######################### Greetings, Daniel Struck "Richard Holland" <[EMAIL PROTECTED]> wrote: > Could you use some kind of scale transformation on the chromatogram's > Graphics2D object, rather than modifying the data? > > http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics2D.html#scale(double,%20double) > > cheers, > Richard > > 2008/11/3 [EMAIL PROTECTED] <[EMAIL PROTECTED]>: > > Hello, > > > > > > I want to provide a slider where the user can change dynamically the height > of > > the peaks of a chromatogram. To do this I change the maxTraceValue variable > > and set the maximum values lower than they are in reality. > > Does there exist a better method do this? > > > > > > Best regards, > > Daniel Struck > > _________________________________________________________ > > Mail sent using root eSolutions Webmailer - www.root.lu > > > > > > _______________________________________________ > > Biojava-l mailing list - Biojava-l@lists.open-bio.org > > http://lists.open-bio.org/mailman/listinfo/biojava-l > > > > _________________________________________________________ Mail sent using root eSolutions Webmailer - www.root.lu _______________________________________________ Biojava-l mailing list - Biojava-l@lists.open-bio.org http://lists.open-bio.org/mailman/listinfo/biojava-l