Какая связь между Canvas и Bitmap? - PullRequest
7 голосов
/ 07 июля 2011

Какая связь между Canvas и Bitmap?

Bitmap drawingBitmap = Bitmap.createBitmap(bmp1.getWidth(),
bmp1.getHeight(), bmp1.getConfig());
canvas = new Canvas(drawingBitmap);
paint = new Paint();
canvas.drawBitmap(bmp1, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SCREEN));
canvas.drawBitmap(bmp2, 0, 0, paint);
compositeImageView.setImageBitmap(drawingBitmap);

Я не понимаю этот код. Почему DrawingBitmap представляет собой композицию bmp1 и bmp2?

Ответы [ 2 ]

9 голосов
/ 07 июля 2011

По сути, Canvas поддерживается Bitmap, поэтому, когда вы рисуете что-либо, используя холст, холст будет перетягиваться в Bitmap, с которым он был создан.Таким образом, когда вы рисуете эти два растровых изображения с помощью холста, он объединяет растровые изображения вместе, и результат будет сохранен в drawingBitmap, поскольку он поддерживает холст.

Аналогия Anh верна, хотявозможно, сбивает с толку (и чрезмерно упрощает, что я и делаю выше) - как я упоминал в комментарии, вы можете думать о Canvas как о ручке, Paint как о конфигурации этой ручки (например, сменнойчернила или что-то - все, что вы можете вписаться в идею настраиваемой ручки), и Bitmap в качестве бумаги, на которой вы рисуете.Аналогия сбивает с толку, если вы слишком сосредотачиваетесь на принятом значении слов.

3 голосов
/ 07 июля 2011

Давайте подумаем canvas как перо и drawingBitmap как бумага. Вы используете ручку, чтобы нарисовать что-то на бумаге, и вы получаете то, что рисуете. Технически, вы можете создать Canvas объект из Bitmap, чтобы рисовать на нем другие растровые изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...