【问题标题】:How can I draw a polygon using Point2D.Double as a point?如何使用 Point2D.Double 作为点绘制多边形?
【发布时间】:2013-12-06 20:38:17
【问题描述】:

无法设置带有小数点坐标的点,因此我调整了比例。这是我的形象。霸天虎标志。

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Polygon;

import java.awt.Color;

import java.awt.geom.Rectangle2D;

import javax.swing.JComponent;


public class DecepticonComponent extends JComponent

{

    public void paintComponent(Graphics g)

    {

    Graphics2D g2 = (Graphics2D) g;
    Rectangle2D.Double background = new Rectangle2D.Double(0,0,610,671);
    g2.draw(background);
    g2.setColor(Color.black);
    g2.fill(background);

    Color myNewPurple = new Color(103,28,196);

    Polygon centerFace = new Polygon();
    centerFace.addPoint(207,25);
    centerFace.addPoint(277,137);
    centerFace.addPoint(344,137);
    centerFace.addPoint(414,25);
    centerFace.addPoint(372,284);
    centerFace.addPoint(310,335);
    centerFace.addPoint(249,284);
    g2.draw(centerFace);
    g2.setColor(myNewPurple);
    g2.fill(centerFace);

    Polygon centerTriangle = new Polygon();
    centerTriangle.addPoint(292,193);
    centerTriangle.addPoint(328,193);
    centerTriangle.addPoint(310,249);
    g2.draw(centerTriangle);
    g2.setColor(Color.black);
    g2.fill(centerTriangle);

    Polygon robotHead = new Polygon();
    robotHead.addPoint(25,25);//1
    robotHead.addPoint(95,123);//2
    robotHead.addPoint(222,165);//3
    robotHead.addPoint(231,228);//4
    robotHead.addPoint(109,196);//5
    robotHead.addPoint(109,207);//6
    robotHead.addPoint(233,242);//7
    robotHead.addPoint(237,270);//8
    robotHead.addPoint(116,242);//9
    robotHead.addPoint(116,253);//10
    robotHead.addPoint(235,282);//11
    robotHead.addPoint(310,349);//12
    robotHead.addPoint(385,282);//11
    robotHead.addPoint(507,253);//10
    robotHead.addPoint(507,242);//9
    robotHead.addPoint(384,270);//8
    robotHead.addPoint(388,242);//7
    robotHead.addPoint(511,207);//6
    robotHead.addPoint(511,193);//5
    robotHead.addPoint(390,228);//4
    robotHead.addPoint(399,165);//3
    robotHead.addPoint(511,123);//2
    robotHead.addPoint(581,25);//1
    robotHead.addPoint(560,305);//13
    robotHead.addPoint(310,641);
    robotHead.addPoint(60,305);//13
    g2.draw(robotHead);
    g2.setColor(myNewPurple);
    g2.fill(robotHead);

    Polygon eye1 = new Polygon();
    eye1.addPoint(123,319);
    eye1.addPoint(263,368);
    eye1.addPoint(235,431);
    g2.draw(eye1);
    g2.setColor(Color.black);
    g2.fill(eye1);

    Polygon eye2 = new Polygon();
    eye2.addPoint(497,319);
    eye2.addPoint(357,368);
    eye2.addPoint(385,431);
    g2.draw(eye2);
    g2.setColor(Color.black);
    g2.fill(eye2);

    Polygon chinL = new Polygon();
    chinL.addPoint(62,333);
    chinL.addPoint(276,620);
    chinL.addPoint(84,543);
    g2.draw(chinL);
    g2.setColor(myNewPurple);
    g2.fill(chinL);

    Polygon chinR = new Polygon();
    chinR.addPoint(558,333);
    chinR.addPoint(344,620);
    chinR.addPoint(536,543);
    g2.draw(chinR);
    g2.setColor(myNewPurple);
    g2.fill(chinR);
    }
}

【问题讨论】:

  • Polygon 类中没有 addPoint2D.Double 这样的东西。你希望这条线做什么?
  • 这就是问题所在。我知道它不存在,这基本上是我最后的手段。我只需要将一个点添加到读取 (double,double) 而不是 (int,int) 的多边形。
  • 但是这些点是屏幕上的像素,对吧?为什么你希望它们的坐标不是整数?
  • 我完全忘记了这一点。看到我在绘图程序中制作的草图,我使用英寸作为我的测量值。我没有意识到在刻度之间切换会很困难,因为将 4-7/8 英寸变成合适的坐标点有点困难。我认为调整我的绘图会更容易,这样我就可以轻松地在两个比例之间切换,而不必写不必要的线条。
  • 你为什么不把你的双打转换成整数呢?或者,如果您有常量,就像上面的代码一样,只需去掉小数即可。

标签: java floating-point draw point polygons


【解决方案1】:

不适用于Ploygon,但您可以使用Shapes API 并改用Path2D 之类的东西

查看Drawing Arbitrary Shapes了解更多详情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 2020-08-16
    • 1970-01-01
    • 2015-08-02
    • 2019-06-23
    • 1970-01-01
    • 2011-01-16
    相关资源
    最近更新 更多