<bdo id='znlMh'></bdo><ul id='znlMh'></ul>

    1. <i id='znlMh'><tr id='znlMh'><dt id='znlMh'><q id='znlMh'><span id='znlMh'><b id='znlMh'><form id='znlMh'><ins id='znlMh'></ins><ul id='znlMh'></ul><sub id='znlMh'></sub></form><legend id='znlMh'></legend><bdo id='znlMh'><pre id='znlMh'><center id='znlMh'></center></pre></bdo></b><th id='znlMh'></th></span></q></dt></tr></i><div id='znlMh'><tfoot id='znlMh'></tfoot><dl id='znlMh'><fieldset id='znlMh'></fieldset></dl></div>

      <small id='znlMh'></small><noframes id='znlMh'>

      <legend id='znlMh'><style id='znlMh'><dir id='znlMh'><q id='znlMh'></q></dir></style></legend>

    2. <tfoot id='znlMh'></tfoot>

      Java - 画一个三角形

      Java - draw a triangle(Java - 画一个三角形)
      <legend id='O7pLS'><style id='O7pLS'><dir id='O7pLS'><q id='O7pLS'></q></dir></style></legend>
          <tfoot id='O7pLS'></tfoot>

          <small id='O7pLS'></small><noframes id='O7pLS'>

            <tbody id='O7pLS'></tbody>
          <i id='O7pLS'><tr id='O7pLS'><dt id='O7pLS'><q id='O7pLS'><span id='O7pLS'><b id='O7pLS'><form id='O7pLS'><ins id='O7pLS'></ins><ul id='O7pLS'></ul><sub id='O7pLS'></sub></form><legend id='O7pLS'></legend><bdo id='O7pLS'><pre id='O7pLS'><center id='O7pLS'></center></pre></bdo></b><th id='O7pLS'></th></span></q></dt></tr></i><div id='O7pLS'><tfoot id='O7pLS'></tfoot><dl id='O7pLS'><fieldset id='O7pLS'></fieldset></dl></div>
            <bdo id='O7pLS'></bdo><ul id='O7pLS'></ul>

              • 本文介绍了Java - 画一个三角形的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                嘿,我知道绘制椭圆/矩形并使用填充它很简单

                Hey I know that it is simple to draw oval/rectangle and fill it using

                g.fillOval(30, 40, 20, 20);
                

                但是如何画一个三角形呢?最好有随机坐标.

                but how to draw a triangle? It would be the best if it would have random coordinates.

                推荐答案

                根据您的需要,至少有两种基本方法可以实现这一目标.

                There are at least two basics ways you can achieve this, based on your needs.

                您可以使用 Polygon 或者你可以使用 2D Graphics Shape API

                您可能会选择哪一种取决于您的要求.Polygon 要求您提前知道点在 3D 空间中的位置,而 Shape API 让您可以更自由地定义形状,而无需事先关心位置.

                Which you might choose comes down to your requirements. Polygon requires you to know, in advance the position of the points within 3D space, where the Shape API gives you more freedom to define the shape without caring about the position in advance.

                这使得 Shape API 更加灵活,因为您可以定义一次形状,然后根据需要简单地转换 Graphics 上下文并重新绘制它.

                This makes the Shape API more flexible, in that you can define the shape once and simply translate the Graphics context as needed and repaint it.

                例如...

                红色是Polygon,绿色是Shape,翻译成位置...

                Red is a Polygon, green is a Shape, which is translated into position...

                import java.awt.BorderLayout;
                import java.awt.Color;
                import java.awt.Dimension;
                import java.awt.EventQueue;
                import java.awt.Graphics;
                import java.awt.Graphics2D;
                import java.awt.Polygon;
                import java.awt.geom.Path2D;
                import java.awt.geom.Point2D;
                import javax.swing.JFrame;
                import javax.swing.JPanel;
                import javax.swing.UIManager;
                import javax.swing.UnsupportedLookAndFeelException;
                
                public class TriangleTest {
                
                    public static void main(String[] args) {
                        new TriangleTest();
                    }
                
                    public TriangleTest() {
                        EventQueue.invokeLater(new Runnable() {
                            @Override
                            public void run() {
                                try {
                                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                                }
                
                                JFrame frame = new JFrame("Testing");
                                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                frame.setLayout(new BorderLayout());
                                frame.add(new TestPane());
                                frame.pack();
                                frame.setLocationRelativeTo(null);
                                frame.setVisible(true);
                            }
                        });
                    }
                
                    public class TestPane extends JPanel {
                
                        private TriangleShape triangleShape;
                        private Polygon poly;
                
                        public TestPane() {
                            triangleShape = new TriangleShape(
                                    new Point2D.Double(50, 0),
                                    new Point2D.Double(100, 100),
                                    new Point2D.Double(0, 100)
                            );
                
                            poly = new Polygon(
                                    new int[]{50, 100, 0},
                                    new int[]{0, 100, 100},
                                    3);
                        }
                
                        @Override
                        public Dimension getPreferredSize() {
                            return new Dimension(200, 200);
                        }
                
                        @Override
                        protected void paintComponent(Graphics g) {
                            super.paintComponent(g);
                            Graphics2D g2d = (Graphics2D) g.create();
                            g2d.setColor(Color.RED);
                            g2d.fill(poly);
                
                            g2d.setColor(Color.GREEN);
                            g2d.translate(50, 100);
                            g2d.fill(triangleShape);
                            g2d.dispose();
                        }
                    }
                
                    public class TriangleShape extends Path2D.Double {
                
                        public TriangleShape(Point2D... points) {
                            moveTo(points[0].getX(), points[0].getY());
                            lineTo(points[1].getX(), points[1].getY());
                            lineTo(points[2].getX(), points[2].getY());
                            closePath();
                        }
                
                    }
                
                }
                

                这篇关于Java - 画一个三角形的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)
                How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)
                Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)
                Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)
                How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)
                How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)
                1. <i id='xHgpP'><tr id='xHgpP'><dt id='xHgpP'><q id='xHgpP'><span id='xHgpP'><b id='xHgpP'><form id='xHgpP'><ins id='xHgpP'></ins><ul id='xHgpP'></ul><sub id='xHgpP'></sub></form><legend id='xHgpP'></legend><bdo id='xHgpP'><pre id='xHgpP'><center id='xHgpP'></center></pre></bdo></b><th id='xHgpP'></th></span></q></dt></tr></i><div id='xHgpP'><tfoot id='xHgpP'></tfoot><dl id='xHgpP'><fieldset id='xHgpP'></fieldset></dl></div>

                2. <tfoot id='xHgpP'></tfoot>

                      <bdo id='xHgpP'></bdo><ul id='xHgpP'></ul>
                      <legend id='xHgpP'><style id='xHgpP'><dir id='xHgpP'><q id='xHgpP'></q></dir></style></legend>
                            <tbody id='xHgpP'></tbody>

                          <small id='xHgpP'></small><noframes id='xHgpP'>