У меня есть объект Bitmap и вы хотите отобразить его на объект Canvas с различными уровнями прозрачности (т. Е. Частично просмотреть весь растровый рисунок). Например, у меня есть спрайты в игре (которые нарисованы поверх фона растрового изображения), которые я хочу исчезнуть из-за непрозрачности, чтобы быть невидимым. Могу ли я сделать это, не прибегая к OpenGL?Рисование полупрозрачных растровых изображений с использованием Canvas (Android)
ответ
Рассматривая Android документ (который выглядит основанный на JSE с совершенно альтернативный GUI), следующий будет вам альфа-канал, поддерживающий изображение:
Bitmap bmp=createBitmap(100,100,Bitmap.Config.ARGB_8888);
Пока источник растровый альфа поддерживая, вы должны иметь возможность рисовать его на другом растровом изображении и выполнять его альфа-значения.
Чтобы исчезнуть, вам нужно будет многократно рисовать изображение с подходящей задержкой (но событие управляется таймером, а не в цикле, если система рендеринга Android не отличается от других Javas), манипулируя альфа-каналом для каждый пиксель на каждой последующей краске.
// Make image more transparent by 50%
int[] pxls=new int[100*100];
bmp.getPixels(pxls,0,100,0,0,100,100);
for(int xa=0,len=pxl.length; xa<len; xa++) {
int alp=(pxls[xa] & 0xFF000000);
alp<<1;
pxls[xa]=(alp | (pxls[xa] & 0x00FFFFFF);
}
bmp.setPixels(pxls,0,100,0,0,100,100);
Caveat 1: Я написал этот код in-situ из JavaDoc; он не был скомпилирован или не протестирован.
Caveat 2: Если цветовое разрешение аппаратного устройства не поддерживает альфа-канал (широко известный как 32-битный цвет), рисование любых изображений в базовой графической системе может просто игнорировать альфа-канал). Но любой композитинг, который вы делаете до этого на обратном буфере, должен соблюдаться. Дело в том, что вы можете использовать, чтобы использовать двухбуферную картину для альфа-смешивания, невосприимчив к основным возможностям/конфигурации устройства.
Вы должны быть в состоянии определить анимацию анимации и применить эту анимацию к imageView. XML-ресурс будет выглядеть следующим образом (по имени fade_animation.xml):
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="100" />
, то вы бы загрузить и применить эту анимацию к пользовательскому ImageView, когда готов:
ImageView sprite = (ImageView) findViewById(R.id.sprite);
Animation animation = AnimationUtils.loadAnimation(this, R.anim.fade_animation);
sprite.startAnimation(animation);
Есть другие варианты слишком. Если вы используете растровые изображения, и вы не хотите, чтобы сделать анимацию, то вы можете вручную уменьшить значение альфа каждого кадра, примерно так:
paint.setAlpha(100);
canvas.drawBitmap(spriteImage, left, top, paint);
Пробовали ли вы какие-либо из этих вариантов?
- 1. Рисование растровых изображений в android
- 2. Android: рисование растровых изображений с субпиксельными координатами
- 3. Как оптимизировать рисование растровых изображений в Android?
- 4. Рисование полупрозрачных форм без перекрытия
- 5. Рисование нескольких изображений на Canvas в Android
- 6. Рисование и создание прямоугольных растровых изображений с использованием Direct2d
- 7. ошибка outofmemory с использованием растровых изображений Android
- 8. Рисование растровых изображений быстрее на холсте Android или OpenGL
- 9. Рисование повернутых растровых изображений на холсте
- 10. Поворот растровых изображений с использованием массива
- 11. Рисование растровых изображений над просмотром камеры
- 12. Рисование рендеринга растровых изображений и кернинг
- 13. Рисование растровых изображений XBM на Arduino
- 14. Рисование растровых изображений на перекрытие холста
- 15. Рисование 2 растровых изображений в одном картинке
- 16. Печать изображений растровых изображений с использованием PCL
- 17. Android - потеря растровых изображений?
- 18. Android-растровое изображение с двух растровых изображений растровых изображений не видно
- 19. Наложение растровых изображений на холст в Android
- 20. OutOfMemoryException с использованием растровых изображений в Xamarin.Android
- 21. Более быстрый способ генерации растровых изображений с использованием GDI +
- 22. Рисование на Java с использованием Canvas
- 23. Рисование кругов с использованием Canvas and Framelayout android
- 24. Слияние двух растровых изображений в android
- 25. Частичная перерисовка растровых изображений в Android
- 26. Кэширование растровых изображений в android
- 27. Ошибка удаления растровых изображений [Android]
- 28. Загрузка растровых изображений в Android
- 29. Ускоренное масштабирование растровых изображений Android
- 30. Android: позиционирование 2 растровых изображений на холсте
Спасибо за код. Я знаю об этом методе, но зацикливаясь на нескольких маленьких спрайтах, подобных этому, каждый кадр уничтожит мою частоту кадров. Я уже писал такой код, и это серьезно медленный цикл и управление одиночными пикселями. Должен быть более простой способ, поскольку несколько элементов GUI обладают эффектами быстрого выцветания. – wordyword