AffineTransform& setClip()问题

时间:2014-05-27 02:41:51

标签: java clipping 2d-games affinetransform path-2d

已解决:

我正在制作一个平铺的2D游戏并遇到问题。我的游戏允许用户使用任意形状的刷子类型创建那里的地图,该刷子类型被缓存为所使用的每种类型的油漆的区域。一旦我有了给定油漆的缓存区域,我将区域分成平铺的Path2D形状,从整个地图上每100到100个瓷砖的交叉点分开。问题在于,当我在视图区域内使用AffineTransform并将其设置为剪辑进行绘画时,显然形状与原来的形状相同。

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

                }

            }

当有移动时,结果会产生实际形状的平铺截止版本......

输出:

初始视图 Initial View 向右移动后查看&amp;向下 View After Movement Down & Right

解决方案

修改专栏

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

0 个答案:

没有答案