试图在矩形内绘制文本,但在 android 处弹出
Trying to draw text inside a rectangle but plops of above it at android
new picture
现在我正在尝试在我绘制的矩形内绘制一个文本(一个数字)。我想制作 2048 以了解更多有关 android 和 kotlin 的用例。但是当我想创建瓷砖时,我遇到了一个大问题。通常数字应该在矩形内,但在我的例子中,它们比原来的矩形高一个矩形。所以在最后一行瓷砖上我没有数字,在顶部有实际游戏场上方的数字。如果你真的不明白我的问题,就写评论吧,我会努力让它变得更好。
重要提示:仅更改文本的 y 线没有帮助,它只会被下一个矩形透支。
这是我的class,我用它来绘制单个图块:
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)
}
new picture 现在我正在尝试在我绘制的矩形内绘制一个文本(一个数字)。我想制作 2048 以了解更多有关 android 和 kotlin 的用例。但是当我想创建瓷砖时,我遇到了一个大问题。通常数字应该在矩形内,但在我的例子中,它们比原来的矩形高一个矩形。所以在最后一行瓷砖上我没有数字,在顶部有实际游戏场上方的数字。如果你真的不明白我的问题,就写评论吧,我会努力让它变得更好。
重要提示:仅更改文本的 y 线没有帮助,它只会被下一个矩形透支。
这是我的class,我用它来绘制单个图块:
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)
}