【发布时间】:2020-09-07 03:21:02
【问题描述】:
我正在尝试使用 Pixmap 绘制一个圆圈。为了使问题更清楚,我将整个 Pixmap 区域填充为白色,然后用不同的颜色绘制圆圈。这是我认为应该可以工作的代码。
我将像素图的宽度/高度设置为圆半径的两倍。
然后我在像素图中间的(半径,半径)处画一个圆。
public static Texture circle(int radius, Color color) {
Pixmap pixmap = new Pixmap(radius * 2, radius * 2, Pixmap.Format.RGBA4444);
pixmap.setColor(Color.WHITE);
pixmap.fill();
pixmap.setColor(color);
pixmap.fillCircle(radius, radius, radius);
Texture texture = new Texture(pixmap);
pixmap.dispose();
}
不幸的是,Pixmap 切断了右侧和底部的圆圈。例如:
如果我将 Pixmap 的宽度和高度都增加 1,那么它看起来很好:
我可以随意添加一个额外的像素,但我想了解为什么这是必要的。为什么将圆的半径设置为 X 会导致直径实际上是 X + 1?
【问题讨论】:
-
半径为 0 的结果是什么?没有圆圈还是单点圆圈?
-
这一像素可能是圆的中心。绘制圆的宽度时,绘制中心像素,左侧
radius像素,右侧radius像素,共radius * 2 + 1。 -
我很想知道将圆心更改为
(radius-0.5, radius-0.5)是否可以解决您的问题。 -
@Yunnosch - 好问题。我本来期望没有圆圈,但实际上我得到了一个单点圆圈。我想这也回答了这个问题。谢谢,这是一种很好的推理方式。
-
好的。我希望这也适用于圆的半径,因此只需将宽度和高度加 1 是您能做的最好的事情,更重要的是,现在您明白为什么了!