在Java Graphics Utility中使用双打?

时间:2013-12-05 18:30:27

标签: java graphics utility

我想知道是否有办法在内置的java图形工具中使用double值绘制一个点。我正在制作一个简单的时钟,但我希望它尽可能精确。 Graphics中的方法drawLine(int,int,int,int)显然不会将double作为参数。这有解决方法吗?

P.S。所讨论的双打是时钟上每只手的x和y的变化,为1秒。

2 个答案:

答案 0 :(得分:0)

像素仅存在于整数位置。把它想象成棋盘,每个方格只有一种颜色,没有什么可说半个方块。

您可以执行一些操作(例如双线性插值)在像素之间绘制,但他们所做的只是根据合适的算法和您选择的位置修改点周围的所有像素。

如果您想要更高的分辨率,那么最简单的方法就是提高您正在使用的图像的分辨率。更多像素可提供更高的精度,直到达到显示设备的极限......

答案 1 :(得分:0)

Graphics2D有一个可以改变的内部AffineTransform矩阵。我没有测试过以下代码,但我认为这个或变体可能接近你想要的(虽然真的,像素都在整数位置......)

Graphics2D g; // get a Graphics2D from somewhere
g.rotate(Math.PI/4);
g.drawLine(0,0,1,0); //draw a line at 45°
// now you should probably rotate back...