gpt4 book ai didi

java - 光栅停止进程,没有错误

转载 作者:行者123 更新时间:2023-12-01 13:30:42 24 4
gpt4 key购买 nike

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

这是我的代码

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);

正如我之前所说,代码打印光栅,但不在内部 for block 内打印。我不知道我做错了什么。感谢您的帮助!

最佳答案

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

例如,x < bound 是真的吗?如果x始终大于或等于p1.x - bound ?如果p1.x > 2 * bound ,你的内部循环永远不会被调用。

关于java - 光栅停止进程,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21587812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com