Как обрезать и заполнить холст, используя альфа-маску - PullRequest
5 голосов
/ 09 января 2010

У меня есть значки .png, которые являются альфа-масками.Мне нужно отобразить их как рисованное изображение с помощью Android SDK.

На iPhone я использую следующее, чтобы получить этот результат, преобразовав альфа-маску image в изображение imageMasked, используя черный какfill:

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, thumbWidth, 
    thumbHeight, 8, 4*thumbWidth, colorSpace, kCGImageAlphaPremultipliedFirst);
CGRect frame = CGRectMake(0,0,thumbWidth,thumbHeight);
CGContextClipToMask(context, frame, [image CGImage]);
CGContextFillRect(context, frame);

CGImageRef imageMasked = CGBitmapContextCreateImage(context);
CGContextRelease(context);

Как мне выполнить вышесказанное в Android SDK?

Я начал писать следующее:

Drawable image = myPngImage;

final int width = image.getMinimumWidth();
final int height = image.getMinimumHeight();

Bitmap imageMasked = Bitmap.createBitmap(width,
    height, Config.ARGB_8888);
Canvas canvas = new Canvas(iconMasked);
image.draw(canvas); ???

Я не нахожуКак сделать вырезку на изображении, используя изображение.

1 Ответ

2 голосов
/ 28 февраля 2010

Решено:

Drawable icon = An_Icon_That_Is_An_Alpha_Mask;
int width = icon.getIntrinsicWidth();
int height = icon.getIntrinsicHeight();
Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8);
Canvas canvas = new Canvas(bm);
icon.setBounds(new Rect(0,0,width,height));
icon.draw(canvas);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...