Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. import java.awt.Graphics;
  2. import java.awt.Graphics2D;
  3. import java.awt.RenderingHints;
  4. import java.awt.event.MouseAdapter;
  5. import java.awt.event.MouseWheelEvent;
  6. import java.awt.geom.AffineTransform;
  7. import java.awt.geom.Point2D;
  8. import java.awt.image.BufferedImage;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import java.util.Random;
  12. import javax.swing.JFrame;
  13. import javax.swing.JPanel;
  14.  
  15. public class ZoomOperations extends JPanel{
  16. private boolean repaint;
  17. private double zoom;
  18. private List<Point2D.Double> points;
  19. private AffineTransform at;
  20. private BufferedImage img;
  21.  
  22. public ZoomOperations() {
  23. repaint = true;
  24. zoom = 0.1;
  25. points = new ArrayList<>();
  26. at = new AffineTransform();
  27. img = null;
  28. Random r = new Random();
  29. for (int i = 0; i < 100; i++)
  30. points.add(new Point2D.Double(5000 * r.nextDouble(), 5000 * r.nextDouble()));
  31.  
  32. addMouseWheelListener(new MouseAdapter() {
  33.  
  34. public void mouseWheelMoved(MouseWheelEvent e) {
  35. if (e.getPreciseWheelRotation() < 0)
  36. zoom = Math.min(zoom+= 0.02,2);
  37. else
  38. zoom = Math.max(zoom-= 0.02,0.01);
  39. repaint();
  40. }
  41. });
  42. }
  43.  
  44. protected void paintComponent(Graphics g) {
  45. super.paintComponent(g);
  46. Graphics2D g2d = (Graphics2D) g;
  47. if (img == null)
  48. img = (BufferedImage)createImage(5000, 5000);
  49. at = g2d.getTransform();
  50. at.translate(0, 0);
  51. at.scale(zoom, zoom);
  52. g2d.setTransform(at);
  53. if (repaint){
  54. Graphics2D g2c = img.createGraphics();
  55. for (Point2D.Double p:points)
  56. g2c.fillOval((int)p.x-50, (int)p.y-50, 50, 50);
  57. g2c.dispose();
  58. repaint = false;
  59. }
  60.  
  61. g2d.drawImage(img, 0, 0, this);
  62. }
  63.  
  64. public static void main(String[] args) {
  65. JFrame jf = new JFrame();
  66. jf.setSize(800, 600);
  67. jf.add(new ZoomOperations());
  68. jf.setVisible(true);
  69. }
  70.  
  71. }
  72.  
  73. private boolean repaint;
  74.  
  75. img = (BufferedImage) createImage(5000, 5000); // How to set the size ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement