【问题标题】:porting image rotations to android将图像旋转移植到android
【发布时间】:2014-04-30 12:23:19
【问题描述】:

我想用 Android 写一个小游戏,因为我有很好的 Java experiancas,所以我首先用 Java 写了它。现在我想移植游戏,但不幸的是Android库不支持“AffineTransform”或“Graphics2d”。 我知道可以使用画布来完成旋转,但我还没有设法显示图像。 我遇到的问题是永远不会调用 onDraw 方法。下面是我在 Java 中使用并希望移植到 Android 的示例代码。

public void drawEdge(Edge edge, Graphics g){
.... computation Stuff
Graphics2D g2d = (Graphics2D) g;
AffineTransform att = new AffineTransform();
att.translate(posX,posY);
att.rotate(rotAngle);
g2d.drawImage(lineImage, att, null);
}

所以在 Android 中我尝试了这个:

public void drawEdge(Edge edge, Graphics g){
.... computation Stuff
Paint mPaint = new Paint();
canvas.drawLine(200, 200, 400, 400, mPaint); // Just a simple line not the edge yet
}

但这不起作用。我也尝试创建 onDraw 方法,但它似乎从未被调用过。此外,我无法将limeImage 作为位图加载。我用过:

Assets.lineBitmap = BitmapFactory.decodeFile("LineImage.png");

并得到按摩:无法解码流:java.io.FileNotFoundException。但是使用:

Assets.lineImage = g.newImage("Line_height6.png", ImageFormat.RGB565);

工作得很好。

我知道有很多教程考虑使用画布,但我仍然无法弄清楚代码有什么问题,所以如果有人对我有任何线索,我将不胜感激。

最好的谢尔盖

【问题讨论】:

    标签: java android canvas porting affinetransform


    【解决方案1】:

    好吧,我设法在上面的代码中画了线,问题是我的itmap文件不是我的:解决了

        FileIO fileIO = game.getFileIO();
        InputStream in = null;
        Bitmap bitmap;
        try {
            in = fileIO.readAsset("Line_height6.png");
            bitmap = BitmapFactory.decodeStream(in);
            } 
        catch(IOException e) {
            throw new RuntimeException("Couldn't load texture '" + "Line_height6.png", e);}
    

    所以我现在要做的是使用游戏开始时创建的画布。然后我就可以画线了。到现在为止还挺好。但是如果我想旋转位图,那么背景也会旋转。我的解决方案尝试是使用位图创建一个新画布:

    Bitmap bmp = lineBitmap;
    Bitmap mutableBitmap = bmp.copy(Bitmap.Config.ARGB_8888, true);
    Canvas newcanvas = new Canvas(mutableBitmap);
    newcanvas.rotate((float) theta);
    newcanvas.drawBitmap(mutableBitmap, matrix, paint2); 
    

    但我现在根本没有得到新图片或错误。背景在那里,以及我在原始画布上绘制的一些其他图像,但我无法显示旋转位图。 有什么建议吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-02
      • 2011-08-12
      • 2011-09-29
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多