2012-03-14 78 views
2

我正在试图在上面有背景图像的动态壁纸上绘制文本。我希望在透明画布上绘制颜色,这样它就不会掩盖背景图像,但由于某种原因,它不会将文本绘制到画布上。Canvas.drawText()不能正常工作

关于我在做什么的错误?

paintText = new Paint(); 
paintText.setColor(Color.WHITE); 
paintText.setStyle(Style.FILL); 
paintText.setAntiAlias(true); 
paintText.setTextSize(20); 

canvas.drawColor(Color.TRANSPARENT); 
canvas.drawText(String.valueOf(Points) + " Points", 50, 50, paintText); 
+0

嗯,怎么样Color.WHITE代替Color.TRANSPARENT? – Coffee 2012-03-14 22:07:43

+1

好吧,我尝试了Color.WHITE,并将文本颜色更改为Color.BLACK,但我得到的是一个没有文本的完整白色屏幕。 – Gatekeeper 2012-03-14 22:10:48

+0

@Gatekeeper把'canvas.restore();'放在'drawText()'后面' – 2012-03-14 22:33:43

回答

2

我会说你不绘制文本之前需要

canvas.drawColor(Color.TRANSPARENT); 

。你没有试过吗?

+0

就这样试了没有,仍然没有。如果我使用canvas.drawBitmap(bmp,0,0,paint);在这之前呢?我见过一些教程,指出您需要在添加文本之前在画布上绘制纯色,但它会掩盖我的位图 – Gatekeeper 2012-03-14 22:18:13

+0

您的画布在图像视图中是正确的?你可以在drawtext方法后在imageview上调用.invalidate()吗? – Vossi 2012-03-14 22:26:04

+0

我在一个动态壁纸,所以我的画布是我相信的画布。 canvas = new Canvas(); – Gatekeeper 2012-03-14 22:28:56

1

更新您的代码:

paintText = new Paint(); 
paintText.setColor(Color.WHITE); 
paintText.setStyle(Style.FILL); 
paintText.setAntiAlias(true); 
paintText.setTextSize(20); 
canvas.save(); // 
canvas.drawColor(Color.TRANSPARENT); 
canvas.drawText(String.valueOf(Points) + " Points", 50, 50, paintText); 
canvas.restore(); //