【发布时间】: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