所以我在只用线绘制形状时遇到了一个大问题。假设我从屏幕中间的一个点开始画一条线,然后以100个像素的距离向前画,角度为0,然后我用角度72度画另一条相同长度的线,以此类推,直到html" target="_blank">360度。它应该给我一个完美的五边形,一条线结束,另一条线从那个点开始,但是线在末端不相交,它非常适合角度为0/90/180/270的正方形,但我需要让它适用于每个形状,甚至是圆。我用这个东西来计算:
_endingPointX = (_currentPostisionX + distance * _cosinuses[_angle]);
_endingPointY = (_currentPostisionY + distance * _sinuses[_angle]);
其中_cosinuses和_sinuses是双精度数组,包含360度中每一个的窦和余弦值。当画线时,我需要将这些值转换为整数。
drawLine(_ currentpossionx,_ currentPostisionY,(int) _endingPointX,(int)_ ending pointy);
我不知道如何解决这个问题,并使线条在绘制形状的末尾相遇。几天来一直试图弄清楚这一点,但我没有想到任何事情。
问题解决了,谢谢各位的建议,使用整数造型是我的错误。
如果您只依赖int
值,您将遇到准确性问题,因为sin(72°)
是不合理的,而sin(90°)
不是当然。
但是,您可以同时以双精度
或浮点
精度绘制Line2D
,或者使用GeneralPath
[使用浮点数
]。
由于sin和cos函数的精度导致舍入错误,它不能完美对齐。要解决这个问题,您可以将起点存储为单独的变量,并将其用作最后一行的终点。
在绘图之前立即以双精度和舍入方式计算所有值。
不要使用四舍五入的进一步计算。
要绘制五边形或 n- 正角形,请使用类似于以下内容的内容:
// number of corners of pentagon
double numVertex = 5;
// how much to change the angle for the next corner( of the turtle )
double angleStep = 360.0 / numVertex;
gc.moveTo(cx, cy - rad);
for (int i= 1; i < numVertex; i++) {
// total angle from 0 degrees
double angle = i* angleStep;
// px point of turtle is corner of pentagon
double px = cx + rad * sin(angle * DEG_TO_RADIANS);
// move turtle to
gc.lineto((int)Math.round(px),
(int)Math.round(py));
}
gc.lineTo(cx, cy - rad);
如果您使用lineTo
而不是线,则点满足的几率更高。
问题内容: 我试图在bufferedimage上绘制水平和垂直线。它最终应该看起来像一个网格单元。但是,当我运行代码时,我只看到两行:最左边的行和最上面的行(即,从0,0到0,图像的高度和从0,0到图像的宽度,0的一行),这里是代码段: 和覆盖的绘制方法: 所有这些都在扩展了JPanel的名为RobotMaze的类中。任何帮助表示赞赏。 问题答案:
我正在尝试使用swing制作一个rpg(是的,这是愚蠢的,我同意,但我这样做是为了学习,而不是实际的工作产品)。目前我正在研究每个角色的统计。 我有一个JPanel,我想画一条线。 左侧是一个JPanel,它有两个组件:表1和JLabel。右侧也是JPanel,它有自己的元素,但那是另一回事了。 我的问题是,我想创建一个只有一个图像的jpanel,该图像将是两行,与表中选定的元素相关。 但不幸的是
主要内容:示例可以使用类的方法在图像上绘制一条线。以下是此方法的语法。 该方法接受以下参数 - mat - 表示要在其上绘制线条的图像的Mat对象。 pt1和pt2 - 表示要绘制线条的点的两个点对象。 scalar - 表示圆的颜色的标量对象(BGR)。 thickness - 表示线条粗细的整数; 默认情况下,厚度值为。 示例 以下程序演示如何在图像上绘制线条并使用JavaFX窗口显示。 在执行上述程序时,
我有以下代码应该在图像中绘制线条。我的代码是: 如果我编写,它实际上可以工作。但是我的数组很长并且来自一个输入。
我正在尝试创建一个DFS生成的迷宫。我首先制作了一个有4行(顶部、右侧、底部和左侧)的对象。然后我将这些线绘制到Maze上。我的问题是大多数单元格看起来都很好,但是的左侧和顶部都有粗线,我不知道如何使它成为一个常规网格。 这是我的单元格,我在这里创建行: 是单元格的宽度,是高度。 这是我的,我在其中画线: 我很感激能得到的任何帮助。 运行时,我的网格如下所示:
我需要帮助。我想给方法提供一个参数,该方法是从获得的。我想使用方法在整个窗口中画一条线。