java - 尝试在矩形内绘制文本,但在 android 上在矩形上方绘制文本

标签 java android kotlin text drawing

new picture 现在我正在尝试在我绘制的矩形内绘制文本(数字)。我想做 2048 来了解更多关于 android 和 kotlin 的用例。但是当我想创建瓷砖时我遇到了一个大问题。通常,数字应该位于矩形内部,但在我的例子中,它们比原始矩形高一个矩形。所以在最后一行图 block 上我没有数字,而在顶部有实际游戏区域上方的数字。如果您不太明白我的问题,请写评论,我会尽力改进。

重要提示:仅更改文本的 y 线并没有帮助,它只会被下一个矩形 overdraw 。

这是我用来绘制单个图 block 的类:

fun drawTile() {
        var number = tile.number
        var cordX = tile.x
        var cordY = tile.y

        shapeDrawable = ShapeDrawable(RectShape())
        shapeDrawable.setBounds(cordX, cordY, tileWidth, tileHeight)

        shapeDrawable.getPaint().color = tile.tileColor
        shapeDrawable.draw(canvas)

        if(number != 0) {

            var paintText = Paint(Paint.ANTI_ALIAS_FLAG)
            paintText.color = Color.BLACK
            paintText.textSize = 50f

            val numberString = "$number"

            paintText.setShadowLayer(10f, 10f, 10f, Color.BLACK)

            canvas.drawText(numberString, cordX.toFloat()+tileWidth/2, cordY.toFloat()+10, paintText) 

        }

        shapeDrawable.draw(canvas)

Here is an pic how it looks ingame

最佳答案

实际上只要改变 y 坐标就可以了,你只需要绘制形状

fun drawTile() {
        var number = tile.number
        var cordX = tile.x
        var cordY = tile.y

        shapeDrawable = ShapeDrawable(RectShape())
        shapeDrawable.setBounds(cordX, cordY, tileWidth, tileHeight)

        shapeDrawable.getPaint().color = tile.tileColor

        shapeDrawable.draw(canvas)
        if(number != 0) {

            var paintText = Paint(Paint.ANTI_ALIAS_FLAG)
            paintText.color = Color.BLACK
            paintText.textSize = 50f

            val numberString = "$number"

            paintText.setShadowLayer(10f, 10f, 10f, Color.BLACK)

            canvas.drawText(numberString, cordX.toFloat() + tileWidth/2, cordY.toFloat() + tileHeight / 2, paintText) 

        }

关于java - 尝试在矩形内绘制文本,但在 android 上在矩形上方绘制文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58164062/

相关文章:

java - 无法编辑表格单元格: Java Swing

java - 我正在尝试在我的 'click counter' android 应用程序中实现最大计数功能

android - 游标 getPosition 始终为 0

android - 升级到Gradle 4.0.0版打破了R8代码缩减

java - 来自 Spring 还是 JNDI 的 TransactionManager? (JBOSS + Spring 3 + Hibernate 4 + JTA)

java - JLabel、流程布局。将 JLabel 居中?

java - 我怎样才能用给定的实例变量创建一个可调整大小的条,并为其设置两种不同的颜色,红色代表 (a) 绿色代表 (b)?

安卓同屏分辨率

Kotlin:使用扩展运算符将数组传递给可变参数方法

java - 如何在饼图外添加标签