基本上,我想使用Graphics绘制一个圆,但我不想使用整数来定位它,而是想使用double值。
理想情况下:
g.drawOval(0.5, 0.5, 50, 50);
非常感谢任何帮助!提前谢谢!
感谢所有帮助人员,但是我想出了一条出路,我的dy变量设置为1,所以如果我想要dx到dy的一半,那将是不可能的,相反我只是将dy更改为2并且dx到1!愚弄我!
答案 0 :(得分:4)
唯一有效的方法是使用Ellipse2D.Double
形状并将其传递给draw(Shape)
实例的Graphics2D
方法。为获得最佳效果,请启用消除锯齿:
public void yourDrawingMethod(Graphics gg)
{
/* Cast it to Graphics2D */
Graphics2D g = (Graphics2D) gg;
/* Enable anti-aliasing and pure stroke */
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
/* Construct a shape and draw it */
Ellipse2D.Double shape = new Ellipse2D.Double(0.5, 0.5, 50, 50);
g.draw(shape);
}
您也可以使用Graphics2D.fill(Shape)
。
答案 1 :(得分:-1)
如果你想要连续运动,那么最好的方法是将x和y保持在double
个变量中。当对象移动时,变量将以不同的速率递增(取决于角度),然后您可以转换为整数...
你将获得职位:
< 0,0.999> :0
< 1,1999 *> :1
< 2,2.9999> :2
< 3,3.999> :3
等。
对于足够长的运动,它会显得流畅。但是这些位置必须是整数值,因为你受技术的约束。您无法以0.3像素显示某些内容。您要么拥有像素,要么不拥有像素。