【发布时间】:2014-02-28 13:38:03
【问题描述】:
我目前正在使用 WritableRaster 和它的 setPixed 方法,我需要它不只设置一个像素,而是设置一个半径为 r 的“圆”。 我在想的是这样的:
for(int y = -r; y < r; y++)
{
for(int x = -r; x < r; x++)
{
raster.setPixel(x,y,color);
}}
问题是,这是否可以制作一个圆圈,如果可以,我如何让它穿过里面的所有像素?
提前致谢!
编辑:对不起,我没有说清楚 - 我正在透明画布上制作橡胶工具,因此,如果我用透明颜色绘制一个圆圈,它不会删除之前的内容......这就是为什么我正在使用 setPixel。
编辑编辑:这是代码的输出(在 g2d 上,使用具有相同值的 drawLine,因此它只填充一个像素,就像方法 setPixel 中一样): http://i.imgur.com/a5QNMuX.png?1
EDIT EDIT EDIT:如果有人出于同样的原因想要使用此代码,我建议使用 BufferedImage.setRGB() 因为它更快。如果您不知道如何处理颜色(最后一个参数),请使用以下内容:
...
buffImg.setRGB(x,y,new Color(r,g,b,a).getRGB());
...
【问题讨论】:
-
你试过这个代码吗?你得到了什么?
-
这是基本的计算机图形学,有很多关于它的资料,你甚至可以从维基百科开始:en.wikipedia.org/wiki/Midpoint_circle_algorithm
-
您必须使用 WritableRaster 吗?如果这是 BufferedImage 的一部分,您应该使用 BufferedImage 的 Graphics 上下文绘制圆。 (如果它不是 BufferedImage 的一部分,(我想知道它来自哪里以及您在那里做什么,但是)人们甚至可以考虑将 WriteableRaster “包装”在 BufferedImage 中,以使用方便的方法通过图形对象)。
-
对不起,伙计们-我不小心删除了问题并忘记将其放回...问题是,这是否可以制作一个圆圈,如果可以,我将如何使它通过所有像素里面?
-
@Marco13 对不起,我没有说清楚-我正在透明画布上制作橡胶工具,因此,如果我用透明颜色画一个圆圈,它不会删除之前的内容。 .. 这就是我使用 setPixel 的原因。
标签: java graph geometry raster coords