Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 光栅停止进程,但没有错误_Java_For Loop_Graphics_Raster - Fatal编程技术网

Java 光栅停止进程,但没有错误

Java 光栅停止进程,但没有错误,java,for-loop,graphics,raster,Java,For Loop,Graphics,Raster,我目前正在制作一个绘画应用程序,并正在实现橡胶工具。由于我使用的画布(JPanel)有一个透明的背景(预期),我不能只调用g2d.fillOval(x,y,x,y),因为它将绘制一个透明的圆,因此之前的图形将保留下来。因此,我决定在两个循环中使用WritableRaster和setPixel方法来塑造像素画成一个圆的整体“形状”(r在每个切线上都是相同的)。然而,我在调用setPixel方法时遇到了问题,因为它不绘制任何东西。我甚至将颜色设置为黑色只是为了测试它,什么也没有。我一直在篡改它,插入

我目前正在制作一个绘画应用程序,并正在实现橡胶工具。由于我使用的画布(JPanel)有一个透明的背景(预期),我不能只调用g2d.fillOval(x,y,x,y),因为它将绘制一个透明的圆,因此之前的图形将保留下来。因此,我决定在两个循环中使用WritableRaster和setPixel方法来塑造像素画成一个圆的整体“形状”(r在每个切线上都是相同的)。然而,我在调用setPixel方法时遇到了问题,因为它不绘制任何东西。我甚至将颜色设置为黑色只是为了测试它,什么也没有。我一直在篡改它,插入打印语句,并将其缩小到最内部的for块中,因为打印方法不会输出到控制台中

这是我的密码

WritableRaster raster = (WritableRaster) bi.getData();
Integer[] arrayw = al.get(i);

Point p1 = new Point(arrayw[0], arrayw[1]);
Point p2 = new Point(arrayw[2], arrayw[3]);
int[] black = new int[]{0, 0, 0};
int r = tl.get(i);

for (int y = p1.y - r; y < r; y++) {
    int bound = (int) (Math.sqrt(r * r - y * y) + 0.5);
    for (int x = p1.x - bound; x < bound; x++) {
        raster.setPixel(x, y, black);
        gc.drawLine(x, y, x, y);
        System.out.println(y + "\t" + x + "\t" + tl.get(i));

    }
}
for (int y = p2.y - r; y < r; y++) {
    int bound = (int) (Math.sqrt(r * r - y * y) + 0.5);
    System.out.print("test");

    for (int x = p2.x - bound; x < bound; x++) {
        raster.setPixel(x, y, black);
        gc.drawLine(x, y, x, y);
        System.out.println(y + "\t" + x + "\t" + tl.get(i));
    }
}


System.out.print("raster");
bi.setData(raster);
WritableRaster raster=(WritableRaster)bi.getData();
整数[]arrayw=al.get(i);
点p1=新点(arrayw[0],arrayw[1]);
点p2=新点(arrayw[2],arrayw[3]);
int[]black=新的int[]{0,0,0};
int r=tl.get(i);
对于(int y=p1.y-r;y

如前所述,代码打印光栅,但不打印内部for块。我不知道我做错了什么。谢谢你的帮助

您是否已验证是否满足内部块的条件


例如,如果
x
总是大于或等于
p1.x-bound
,那么
x
是真的吗?如果
p1.x>2*bound
,您的内部循环将永远不会被调用。

您是否验证过内部块的条件是否满足?例如,如果
x
总是大于或等于
p1.x-bound
,那么
x
是真的吗?如果
p1.x>2*bound
,您的内部循环将永远不会被调用。@NathanielJones谢谢,您是对的。我让它工作了。