在Java中绘制形状对象(可拖动,可调整大小并可以旋转)

莫加迪(Mokgadi Rasekgala)

我正在尝试绘制可用于创建图片的形状(三角形,矩形,正方形和圆形)。用户应该能够在画布上放置形状并将其拖动,甚至放大以创建所需的图片。

我尝试覆盖paintComponent()aJPanel来实现这一点,但是意识到Jpanels形状仍然是正方形,所以当您有一个圆形时,即使您不一定要触摸它,也仍然可以拖动它,因为它位于正方形内并且也难以绘制三角形

您会建议哪些图书馆?

充满鳗鱼的气垫船

Shape接口和派生类(例如Path2D,Ellipse2D和Rectangle2D)将在这里为您提供帮助,因为从它派生的所有类都必须具有contains(Point p)可以使用方法。

例如:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

@SuppressWarnings("serial")
public class DragShape extends JPanel {
   private static final int PREF_W = 800;
   private static final int PREF_H = 700;
   private static final Color SHAPE_COLOR = new Color(255, 100, 100);
   private Path2D myShape = new Path2D.Double();

   public DragShape() {
      myShape.append(new Ellipse2D.Double(150, 50, 200, 200), true);
      myShape.append(new Rectangle2D.Double(150, 150, 200, 400), true);
      myShape.append(new Ellipse2D.Double(350, 250, 150, 150), true);
      myShape.append(new Ellipse2D.Double(150, 450, 200, 200), true);

      MyMouseAdapter myMouseAdapter = new MyMouseAdapter();
      addMouseListener(myMouseAdapter);
      addMouseMotionListener(myMouseAdapter);
   }

   @Override
   protected void paintComponent(Graphics g) {
      super.paintComponent(g);
      Graphics2D g2 = (Graphics2D) g;
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
      if (myShape != null) {
         g2.setColor(SHAPE_COLOR);
         g2.fill(myShape);
      }
   }

   @Override
   public Dimension getPreferredSize() {
      return new Dimension(PREF_W, PREF_H);
   }

   class MyMouseAdapter extends MouseAdapter {
      private boolean pressed = false;
      private Point point;

      @Override
      public void mousePressed(MouseEvent e) {
         if (e.getButton() != MouseEvent.BUTTON1) {
            return;
         }

         if (myShape != null && myShape.contains(e.getPoint())) {
            pressed = true;
            this.point = e.getPoint();
         }
      }

      @Override
      public void mouseDragged(MouseEvent e) {
         if (pressed) {
            int deltaX = e.getX() - point.x;
            int deltaY = e.getY() - point.y;           
            myShape.transform(AffineTransform.getTranslateInstance(deltaX, deltaY));
            point = e.getPoint();
            repaint();
         }
      }

      @Override
      public void mouseReleased(MouseEvent e) {
         pressed = false;
      }
   }

   private static void createAndShowGui() {
      DragShape mainPanel = new DragShape();

      JFrame frame = new JFrame("DragShape");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

我会让你弄清楚旋转和调整大小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

div中可调整大小和可拖动的图像

来自分类Dev

使用WPF在Canvas上的用户可调整大小和用户可旋转形状

来自分类Dev

jQuery UI可拖动+可调整大小的包含问题

来自分类Dev

拖放后可拖动和可调整大小

来自分类Dev

可调整鼠标大小的可拖动小部件

来自分类Dev

jQuery UI可调整大小和可拖动的问题

来自分类Dev

ExtJS 4.2可调整大小的可拖动组件

来自分类Dev

Angular 8中可拖动和可调整大小的垫对话框

来自分类Dev

可调整大小的容器中可拖动元素的收容问题

来自分类Dev

如何获得可拖动和可调整大小的图像以及仅可调整div的图像?

来自分类Dev

jQuery UI在父容器中的可拖动和可调整大小的div中出现z-Index问题

来自分类Dev

jQuery可拖动和可调整大小在动态生成的元素中无法一起使用

来自分类Dev

可调整大小的可移动矩形

来自分类Dev

jQuery可调整大小的可拖动闪烁,用于CSS3转换

来自分类Dev

具有可调整大小/可拖动元素的响应式jQuery UI

来自分类Dev

使用内部滚动条创建可拖动的,可调整大小的div容器

来自分类Dev

在相同元素上可拖动和可调整大小的jQuery

来自分类Dev

jQuery UI同时使用可调整大小和可拖动

来自分类Dev

具有角度的可拖动和可调整大小的div

来自分类Dev

可拖动和可调整大小的DIV不起作用

来自分类Dev

Javascript Grid UI-可拖动和可调整大小

来自分类Dev

jQuery可调整大小和可拖动无法同时工作

来自分类Dev

具有z-index的可拖动,可调整大小的div

来自分类Dev

jQuery / Javascript可拖动和可调整大小不适用于div克隆

来自分类Dev

Java SWT中的可调整大小对话框

来自分类Dev

Android样式拖动可调整大小菜单

来自分类Dev

通过拖动使d3 div可调整大小

来自分类Dev

Android样式拖动可调整大小菜单

来自分类Dev

GLSL中的可调整大小的数组

Related 相关文章

  1. 1

    div中可调整大小和可拖动的图像

  2. 2

    使用WPF在Canvas上的用户可调整大小和用户可旋转形状

  3. 3

    jQuery UI可拖动+可调整大小的包含问题

  4. 4

    拖放后可拖动和可调整大小

  5. 5

    可调整鼠标大小的可拖动小部件

  6. 6

    jQuery UI可调整大小和可拖动的问题

  7. 7

    ExtJS 4.2可调整大小的可拖动组件

  8. 8

    Angular 8中可拖动和可调整大小的垫对话框

  9. 9

    可调整大小的容器中可拖动元素的收容问题

  10. 10

    如何获得可拖动和可调整大小的图像以及仅可调整div的图像?

  11. 11

    jQuery UI在父容器中的可拖动和可调整大小的div中出现z-Index问题

  12. 12

    jQuery可拖动和可调整大小在动态生成的元素中无法一起使用

  13. 13

    可调整大小的可移动矩形

  14. 14

    jQuery可调整大小的可拖动闪烁,用于CSS3转换

  15. 15

    具有可调整大小/可拖动元素的响应式jQuery UI

  16. 16

    使用内部滚动条创建可拖动的,可调整大小的div容器

  17. 17

    在相同元素上可拖动和可调整大小的jQuery

  18. 18

    jQuery UI同时使用可调整大小和可拖动

  19. 19

    具有角度的可拖动和可调整大小的div

  20. 20

    可拖动和可调整大小的DIV不起作用

  21. 21

    Javascript Grid UI-可拖动和可调整大小

  22. 22

    jQuery可调整大小和可拖动无法同时工作

  23. 23

    具有z-index的可拖动,可调整大小的div

  24. 24

    jQuery / Javascript可拖动和可调整大小不适用于div克隆

  25. 25

    Java SWT中的可调整大小对话框

  26. 26

    Android样式拖动可调整大小菜单

  27. 27

    通过拖动使d3 div可调整大小

  28. 28

    Android样式拖动可调整大小菜单

  29. 29

    GLSL中的可调整大小的数组

热门标签

归档