在ImmediateLayer中显示大图像

时间:2012-05-21 13:23:53

标签: playn

屏幕截图:http://imgur.com/kNASp

编辑 - 为了更好地演示此问题,似乎立即图层中的大图像被剪裁为ImmediateLayer的大小。

在示例图像中,有两个ImmediateLayers。左手大小显示的图像大于ImmediateLayer的大小,并在旋转时被剪切。在右侧,图像的低分辨率版本按比例放大并显示在相同位置。别夹子。

在后台显示图像的原始雇用版本,显示其完整加载,并且仅在ImmediateLayer中显示时被剪裁。

所以,不是轮换问题,而是一个问题,可以在ImmediateLayer中显示和翻译图像而不会被剪裁吗?

ORIGINAL -

在PlayN中,我正在尝试在渲染到剪切的ImmediateLayer时旋转图像。我可以通过在渲染时设置曲面的旋转来旋转图像,但这会导致图像被剪裁然后旋转。因此,星形图像在旋转到位之前会将其点剪掉。

这个旋转代码是否正确并且剪切了一个错误?

surface.save();

surface.rotate(rotation);

surface.drawImage(star, 0, 0);
surface.restore();

背景,使用ImmediateLayer的原因是并排有2个玩家分屏视图。

2 个答案:

答案 0 :(得分:1)

编辑:

你显然做错了什么。我添加了一个通过旋转和平移trasform将图像绘制到剪切的ImmediateLayer中的示例,它可以正常工作。查看this example,希望它能说明你做错了什么。

Example of rotated and translated image drawing into clipped layer

ORIGINAL:

你能发布一个显示错误的截图吗?

除了定义剪辑区域的ImmediateLayer的边界之外,不会发生剪辑(你肯定旋转ImmediateLayer本身)。

因此,无论是旋转Surface变换然后绘制图像都无关紧要。如果旋转图像的某些部分落在ImmediateLayer的边界之外,那些部分将被剪裁。但是,即时图层范围内的所有内容都将被正常绘制。

答案 1 :(得分:0)

@samskivert - 运行你的示例代码并将其与屏幕截图进行比较我注意到我的结果完全不同 - 我根本没有剪辑。

将项目的playn依赖性从1.2移动到1.3.1,因此Lwjgl解决了这个问题:

http://imgur.com/hqile

完全相同的代码,错误的依赖。感谢您帮助解决问题的根源,并感谢您为playn打造了如此多的优秀作品!