在ImageView / Bitmap上绘制画布

时间:2015-12-03 22:27:45

标签: java android canvas bitmap imageview

我一直试图在Canvas上绘制ImageView,但在创建位图后,我在屏幕上看不到图像。我唯一得到的是我在onDraw方法中绘制的小圆圈。我希望Canvas上有ImageView

我已获得以下代码:

public class MainActivity extends AppCompatActivity {

  ImageView imageView;
  Bitmap myBitmap;
  Paint paint;
  Button button;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (Button) findViewById(R.id.button);

  }

  public void onClickButton(View view) {

    View v = new DrawCanvas(getApplicationContext());
    Bitmap bitmap = Bitmap.createBitmap(48, 48, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);

    v.draw(canvas);
    imageView = (ImageView) findViewById(R.id.testpicture);
    imageView.setImageBitmap(bitmap);
  }
}

public class DrawCanvas extends View {

    Paint paint = new Paint();

    public DrawCanvas(Context context) {
      super(context);
    }

    public DrawCanvas(Context context, AttributeSet attrs) {
      super(context, attrs);
    }


    @Override
    public void onDraw(Canvas canvas) {
      super.onDraw(canvas);
      paint.setColor(Color.RED);

      canvas.drawCircle(25, 25, 5, paint);
    }
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

首先,你过度复杂了。您不需要或不想要一个视图来执行您正在执行的操作。如果要绘制圆形,请使用onClick中的canvas.drawCircle直接在画布上进行绘制。

其次,所有setImageBitmap都会覆盖您设置的任何先前位图。如果要将其显示在上一张图像上,则有两个选项:

1)将两个图像视图相互叠加,并将顶部图像设置为在画布上制作的位图(为了完成这项工作,您可能需要确保位图上的背景颜色是透明的)。

2)在ImageView上创建一个新视图,通过覆盖onDraw显示2位图。

第一种方法可能更容易。