【问题标题】:I have 3 same bitmaps, how to draw one behind one mid and one infront我有 3 个相同的位图,如何在一个中间和一个前面绘制一个
【发布时间】:2013-10-01 13:56:07
【问题描述】:

我有一个圆形类,它有一个绘图功能,,, 我有一个视图类,它创建了 3 个具有 3 种不同颜色的圆圈,, 我在屏幕上成功绘制了圆圈,左侧1个,中间1个,右侧1个...... 圆圈的高度几乎是相同的高度有小的不同......

    O 
  O
O

想象一下 3 个球,但高度更小(当球向左或向右移动时,它们相交)。 现在我的问题是,我试图将右上角的球移到左角,同时将左下角的球移到右上角,我看到它们都出现在上面中间球,但我想要的是顶部球出现在中间球后面,最后一个球出现在中间球上方,就像现在一样,我怎么能做到这样?

编辑:::

public class picture {
private Bitmap bitmapPicture;   // the actual bitmap
private int x;          // the X coordinate
private int y;          // the Y coordinate

        ...


public void draw(Canvas canvas,Paint paint) {
    canvas.drawBitmap(bitmapPicture, x , y , paint);

    }
some functions to move it to the right,, and left...
.....
}

我的视图类:

public class GamePanel extends View implements Runnable{
    private Picture[] picture;
       .....

      protected void onDraw(Canvas canvas) {
      super.onDraw(canvas);
      Paint paint = new Paint();
      for(int i=0;i<cupsNumber;i++){
         cup[i].draw(canvas,paint);
      }
        invalidate();
    }

}

现在在我的视图类中,我激活了将 i=0 上的图片向右移动,i=2 上的图片向左移动的功能,(右上角的 i=0,i= 2 在左下角)现在它们都与中间图片相交但没有完全隐藏它,所以在中间宽度,我可以看到所有图片,现在我的问题是,我看到球向左移动在中间球的顶部和向右移动的球在中间球的顶部(有时是随机的,就像它们都在中间后面等) 我想要的是,顶部的球出现在中间的球后面,最后的球出现在中间的球上方,我该怎么做?

【问题讨论】:

    标签: android bitmap


    【解决方案1】:

    您可能需要自己管理位图。

    用于绘制位图的View 类实际上应该是覆盖onDraw()View 的子类。示例:

    public class myCircleDrawer extends View {
         Bitmap circle1, circle2, circle3;
    
         @Override
         public void onDraw(canvas c) {
               c.drawBitmap(bitmap1);
         }
    }
    

    尝试阅读 Canvas 文档以了解用于更改位图 (x,y) 坐标以便移动它们的方法

    编辑:

    好的,现在我明白了,如果您想做的是游戏,我建议您查看SurfaceViewSurfaceView.Renderer。这背后的原因是您需要自己管理对draw() 函数的调用,而不是覆盖onDraw();所有这些都在您更新实体属性之后进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      相关资源
      最近更新 更多