如何使用Codename One的Transform类在命令上旋转图像?

时间:2017-11-15 01:33:34

标签: java codenameone

我目前正在做一个学校项目,我们正在使用Codename One创建一个Asteroids游戏。我当前的功能很好,除了旋转船的图像。使用Transform类无效;无论如何应用变换或绘制图像,图像都不会旋转。

以下是用于转换的代码的示例部分:

public void turnRight() //Rotates the ship 5 degrees clockwise
{
    if (direction==355)
        direction = 0;
    else
        direction+=5;
    Transform tmpTransform = Transform.makeIdentity();
    theImage.getGraphics().getTransform(tmpTransform);
    tmpTransform.rotate((float)Math.toRadians(5), x, y);
    theImage.getGraphics().setTransform(tmpTransform);
    theImage.getGraphics().drawImage(shipPic, 0, 0);
}

其中:

  • theImage是一个可变图像(100x100)
  • shipPic是通过Image.createImage(String path)
  • 创建的图像

另外,我尝试过使用draw(Graphics g,Point p)方法并传递image.getGraphics(),以及传递shipPic.getGraphics() 我很茫然,而Codename One关于这个主题的文档是无益的。

我可以得到一些帮助吗?

1 个答案:

答案 0 :(得分:1)

您需要使用一个图形对象,如下所示:

图形g = theImage.getGraphics();

会更正确。在渲染到图像时,您还必须测试变换支持,因为低级图形并不总是可移植到所有表面中的所有OS。一个很好的例子是iOS,渲染到图像使用完全不同的低级实现而不是显示渲染。

通常我会直接渲染到显示器,因为它是现代设备上的硬件加速,而图像通常是用软件实现的。

关于文档,您是否阅读了开发者指南中的graphics section

它应包含对所有内容的解释,如果缺少某些内容,则search。如果您仍然无法找到并自行解决问题,请注意您也可以edit the docs并帮助我们改进它们。