2011-07-25 18 views
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); 

そしてここでは、キャンバスの上にテキストを描画するために使用される方法である:問題がどこにある

    private Canvas drawTextImage(Canvas c){ 
         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); 
         return c; 
         } 

誰かが、私にしてください教えてもらえ!?

答えて

1

はドローのドキュメント(キャンバス)が言うので:

「手動で指定したキャンバスに、このビュー(とそのすべての子)をレンダリングします。」多分にしてみてください

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); 
} 
+0

しかしbitmapResultは私が!!それに全く書かれたテキストを持っていないので、私はこれを行うことはできませんその上にキャンバスを返すdrawTextImage()にテキストを書いてください。そのキャンバスはテキストがImageViewに設定されています:) – adrian

+0

他の場所に問題があります:) – adrian

+0

Canvas(ビットマップビットマップ)のドキュメントを見ています。 _ "描画する指定されたビットマップを持つキャンバスを構築します。" IIRCはキャンバスにビットマップを提供するので、それを直接ビットマップに描画します。 – Tomas