Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 仿射变换&setClip()问题_Java_Clipping_2d Games_Affinetransform_Path 2d - Fatal编程技术网

Java 仿射变换&setClip()问题

Java 仿射变换&setClip()问题,java,clipping,2d-games,affinetransform,path-2d,Java,Clipping,2d Games,Affinetransform,Path 2d,已解决: 我正在制作一个平铺2d游戏,遇到了一个问题。我的游戏允许用户使用任意形状的画笔类型创建地图,该画笔类型被缓存为所使用的每种绘画类型的区域。一旦我有了给定绘制的缓存区域,我就将这些区域从整个地图上每个100×100平铺的交点分离为平铺Path2D形状。问题是,当我在查看区域内仿射变换瓷砖并将其设置为用于绘制的剪辑时,显然形状与原来的形状是断开的 for(int y = 0; y < host_frame.getHeight(); y+=100){

已解决:

我正在制作一个平铺2d游戏,遇到了一个问题。我的游戏允许用户使用任意形状的画笔类型创建地图,该画笔类型被缓存为所使用的每种绘画类型的区域。一旦我有了给定绘制的缓存区域,我就将这些区域从整个地图上每个100×100平铺的交点分离为平铺Path2D形状。问题是,当我在查看区域内仿射变换瓷砖并将其设置为用于绘制的剪辑时,显然形状与原来的形状是断开的

            for(int y = 0; y < host_frame.getHeight(); y+=100){

                for(int x = 0; x < host_frame.getWidth(); x+=100){

                    host.setClip(AffineTransform.getTranslateInstance(CamX, CamY).createTransformedShape(paint_tiles.get(paint_textures.get(i)).get(new Point(x,y)))); 
                    host.drawImage(paint_textures.get(i).getImage(), x, y, host_frame);

                }

            }

一个实际的测试需要更少的猜测和更好的回答。你可以先不去玩这个clipping@MadProgrammer我必须使用setClip方法,在每个瓷砖内绘制非方形形状时,我没有其他选择。请注意,有两种不同类型的油漆用于草地和海洋。首先,我从草砖开始,草砖的一部分没有填满,因为从我画海洋到绘图区域的一部分创建了一个洞。我将重新发布一个可运行的示例。@MadProgrammer发现了这个问题,感谢您让我测试这个概念,否则就无法解决这个问题。问题是当剪辑在另一个点时,我在一个点绘制平铺图像。我犯了个愚蠢的错误。呵呵,剪辑很有趣:。别忘了重置它;不,只是个潜伏者;
host.drawImage(paint_textures.get(i).getImage(), AffineTransform.getTranslateInstance(CamX, CamY).createTransformedShape(paint_tiles.get(paint_textures.get(i)).get(new Point(x,y))).getBounds().x,AffineTransform.getTranslateInstance(CamX, CamY).createTransformedShape(paint_tiles.get(paint_textures.get(i)).get(new Point(x,y))).getBounds().y, host_frame);