Я загружаю ресурсы png с помощью BitmapFactory.decodeResource
, а затем рисую их на Canvas
, используя drawBitmap()
.
Я рисую разные слои по одному, чтобы прозрачные объекты перекрывали то, что они предполагалик, но когда у меня есть альфа-уровни в моих pngs, которые выше 0, они, кажется, игнорируются.Места, где альфа равен 0, не отображаются правильно, но где альфа меньше 255 вместо того, чтобы смешивать цвет с существующим цветом в этом пикселе, он просто рисует его без какого-либо альфа-смешения.
Как нарисовать растровое изображение на Canvas
с правильным смешиванием на основе альфа-канала исходных изображений?Соответствующие фрагменты кода следуют:
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Config.ARGB_8888;
...
decorationTextures[1] = new
TextureStatic(BitmapFactory.decodeResource(resources, R.drawable.ice_1, opt));
decorationTextures[2] = new
TextureStatic(BitmapFactory.decodeResource(resources, R.drawable.ice_2, opt));
...
if(mTexture != null && mInPlay) {
if(mZone != null)
canvas.drawBitmap(mTexture.getBitmap(),
mScreenX + mZone.getXOffset(),
mScreenY + mZone.getYOffset(), null);
else
canvas.drawBitmap(mTexture.getBitmap(), mScreenX, mScreenY, null);
}