Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.RenderingHints;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseWheelEvent;
- import java.awt.geom.AffineTransform;
- import java.awt.geom.Point2D;
- import java.awt.image.BufferedImage;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Random;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class ZoomOperations extends JPanel{
- private boolean repaint;
- private double zoom;
- private List<Point2D.Double> points;
- private AffineTransform at;
- private BufferedImage img;
- public ZoomOperations() {
- repaint = true;
- zoom = 0.1;
- points = new ArrayList<>();
- at = new AffineTransform();
- img = null;
- Random r = new Random();
- for (int i = 0; i < 100; i++)
- points.add(new Point2D.Double(5000 * r.nextDouble(), 5000 * r.nextDouble()));
- addMouseWheelListener(new MouseAdapter() {
- public void mouseWheelMoved(MouseWheelEvent e) {
- if (e.getPreciseWheelRotation() < 0)
- zoom = Math.min(zoom+= 0.02,2);
- else
- zoom = Math.max(zoom-= 0.02,0.01);
- repaint();
- }
- });
- }
- protected void paintComponent(Graphics g) {
- super.paintComponent(g);
- Graphics2D g2d = (Graphics2D) g;
- if (img == null)
- img = (BufferedImage)createImage(5000, 5000);
- at = g2d.getTransform();
- at.translate(0, 0);
- at.scale(zoom, zoom);
- g2d.setTransform(at);
- if (repaint){
- Graphics2D g2c = img.createGraphics();
- for (Point2D.Double p:points)
- g2c.fillOval((int)p.x-50, (int)p.y-50, 50, 50);
- g2c.dispose();
- repaint = false;
- }
- g2d.drawImage(img, 0, 0, this);
- }
- public static void main(String[] args) {
- JFrame jf = new JFrame();
- jf.setSize(800, 600);
- jf.add(new ZoomOperations());
- jf.setVisible(true);
- }
- }
- private boolean repaint;
- img = (BufferedImage) createImage(5000, 5000); // How to set the size ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement