尝试使用画布在其上绘制文本时,图像显示为黑色

时间:2011-07-25 12:33:50

标签: android canvas imageview

我有一个位图,我正在尝试使用canvas编写文本。在画布中设置位图并执行必要的操作(在画布上写入文本)后,我在{{上绘制生成的画布1}}。最大的问题是没有显示图像......屏幕变黑。现在,我知道位图返回正常,因为我在进行画布操作之前就显示了。

所以,我就是这样做的:

ImageView

以下是用于在画布上绘制文本的方法:

                     image= (ImageView) findViewById(R.id.imageview);
                    bitmap = android.provider.MediaStore.Images.Media
                       .getBitmap(cr, selectedImage);
                      int heightOfOld=bitmap.getHeight();
                      int widthOfOld=bitmap.getWidth();
                       android.graphics.Bitmap.Config hasAlpha=bitmap.getConfig();

                       Bitmap bitmapResult=bitmap.createBitmap(widthOfOld, heightOfOld, hasAlpha);
                       Canvas c=new Canvas(bitmapResult);
                       Canvas c1=drawTextImage(c);
                       image.draw(c1);

有人可以告诉我问题出在哪里了吗??

1 个答案:

答案 0 :(得分:1)

因为draw(Canvas)的文档说:

  

“手动将此视图(及其所有子项)渲染到给定的Canvas。”

也许试试:

image.setImageBitmap(bitmapResult);
  

“将位图设置为此ImageView的内容。”

更新:示例 我认为这应该有效(不能测试它):

image = (ImageView) findViewById(R.id.imageview);
bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr, selectedImage);

Canvas c = new Canvas(bitmap);
drawTextImage(bitmap);
image.setImageBitmap(bitmap);

private Canvas drawTextImage(Bitmap b){
    Canvas c = new Canvas(b);
    Paint paint = new Paint();
    paint.setColor(Color.BLUE);
    paint.setStyle(Paint.Style.FILL);
    paint.setAntiAlias(true);
    paint.setTextSize(20);
    c.drawText("Golden Stag", 30, 200, paint);
}