1

我通过以下代码创建了一个图像:

Bitmap bmp = Bitmap.createBitmap(512, 512, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);

try {
    int tile1ResID = getResources().getIdentifier("drawable/m" + String.valueOf(tileOfPoint.x) + "_" + String.valueOf(tileOfPoint.y), "drawable", "com.example.sabtt1");

    canvas.drawBitmap(Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), tile1ResID), 256, 256, true), 0, 0, null);
    canvas.save();
}
catch (Exception e) {
}

canvas.save();

ImageView imgMap1 = (ImageView) findViewById(R.id.imgMap1);
imgMap1.setImageDrawable(new BitmapDrawable(Bitmap.createBitmap(bmp, 0, 0, 500, 500)));

现在我想把它作为背景。这样用户就可以添加图像或在其上绘图。如何将其设置为背景?是否可以同时添加图像和用手指绘制?

我使用此代码进行绘制:

@Override
public void onClick(View arg0) {
    try {
        Bitmap gestureImg = gesture.getGesture().toBitmap(100, 100, 8, Color.BLACK);

        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        gestureImg.compress(Bitmap.CompressFormat.PNG, 100, bos);
        byte[] bArray = bos.toByteArray();

        Intent intent = new Intent(Activity1.this, Activity2.class);

        intent.putExtra("draw", bArray);
        startActivity(intent);
    }
    catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(Activity1.this, "No draw on the string", 3000).show();
    }
}

和 OnDragListener 用于添加和移动图像。

我知道我应该使用以下代码作为背景:

LinearLayout ll = new LinearLayout(this);
    ll.setBackgroundResource(R.drawable.nn);
    this.setContentView(ll);

但是通过使用此代码,我看不到其他图像。

提前致谢。

4

1 回答 1

0

您可以在主位图上绘制其他位图:

Bitmap bmp = Bitmap.createBitmap(512, 512, Bitmap.Config.ARGB_8888);
bmp = <load from resource>
Canvas canvas = new Canvas(bmp);
Bitmap gestureImg = <get bitmap from gesture or loading>
canvas.drawBitmap(gestureImg);

然后加载最终的位图:

ImageView imgMap1 = (ImageView) findViewById(R.id.imgMap1);
imgMap1.setImageDrawable(new BitmapDrawable(Bitmap.createBitmap(bmp, 0, 0, 500, 500)));

或者,您可以将主位图和所有其他手势/加载位图存储在单独的对象中,当您想要更新时,imgMap1您可以制作组合位图;

还可以将新位图用作背景:

ll.setBackgroundDrawable( new BitmapDrawable( bmp ) );
于 2012-09-26T10:19:31.890 回答