【问题标题】:Drawing stones on the board for Android Go game App为安卓围棋游戏应用在棋盘上画石
【发布时间】:2023-04-01 20:30:02
【问题描述】:

我是一名 Android 新手,我正在为 Android 开发围棋游戏应用程序。 我在棋盘上画单块石头时遇到问题。
这是我的 onDraw() 方法。

public void onDraw(Canvas canvas) {
   //drawing a board
   //...
   //...

     canvas.drawBitmap(stone_image, stoneX - (stone_image.getWidth() / 2), stoneY
     - (stone_image.getHeight() / 2),paint);
}

我有一个 onTouch() 方法:

public boolean onTouchEvent(MotionEvent event) {
    stoneX = (int) event.getX();
    stoneY = (int) event.getY();
    return true;
}

关键是,当我使用这种方法在我的类构造函数中设置背景颜色时:

setBackgroundColor(Color.WHITE);

在touchEvent之后,应用程序无法在板上绘制石头,但是当我不设置背景颜色时,应用程序完美地绘制了石头。
附言属性stoneX,stoneY已正确定义和初始化。

【问题讨论】:

    标签: android drawing 2d baduk


    【解决方案1】:

    我不知道您使用的是什么视图,但我知道在使用带有背景的 SurfaceView 时会出现一些问题(其他视图也可能是这种情况?),其中背景绘制在顶部,所以您只得到一个背景。

    而不是setBackgroundColor(Color.WHITE)设置背景颜色,你应该用canvas.drawColor(Color.WHITE)开始你的onDraw()

    【讨论】:

    • 我正在使用 SurfaceView。谢谢你的建议奏效了!附言我应该怎么做,设置背景图片?
    • 不客气,记得将问题标记为已回答 :) 要使用背景图像,您可以将 drawColor 替换为 drawBitmap 并以这种方式绘制图像,或者如果您有可绘制对象,您会从你的 onDraw 中调用它的 draw()。