Всем привет! 
И так. Мы хотим изменить цвет картинки, а если ещё проще для понимания, то возьмём простую картинку в виде буквы А. Буква будет чёрной на белом фоне. И давайте сделаем её синей или с оттенком синего. Много писать не буду, приведу пример рабочего мидлета, по комментариям надеюсь будет понятно что к чему:
| Код | /* * Midlet.java * * Created on 15 Декабрь 2006 г., 12:03 */
package com.vitalich;
import java.io.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*;
/** * Изменение цвета картинки. * * @author javastic * @version */ public class Midlet extends MIDlet { public void startApp() { Display.getDisplay(this).setCurrent(new TestCanvas()); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
class TestCanvas extends Canvas {
private Image imgA = null; private int[] imgData; TestCanvas() { // зугружаем картинку try { imgA = Image.createImage("/res/a.png"); } catch (IOException ex) { ex.printStackTrace(); } //определим размер картинки imgData = new int[imgA.getWidth()*imgA.getHeight()]; //скопируем в массив imgData значения пикселов imgA.getRGB(imgData, 0, imgA.getWidth(), 0, 0, imgA.getWidth(), imgA.getHeight());
for(int i=0; i < imgData.length; i++){ int color = (imgData[i] & 0x00FFFFFF); //получение цвета пикселя
if (color == 0) color = 0x220000FF; //0x22 - это интенсивность цвета от 0-255, //остальные биты это RGB - цвета //0000FF - это синий цвет :) imgData[i] = color; } // пересоздаём картинку с измененным цветом imgA = Image.createRGBImage(imgData, imgA.getWidth(), imgA.getHeight(), true); } public void paint(Graphics g) { g.setColor(0xffffff); g.fillRect(0, 0, getWidth(), getHeight()); //отрисовка картинки g.drawImage(imgA, getWidth() / 2, getHeight() / 2, g.HCENTER | g.TOP); } }
|
Наслаждайтесь!
Исходники: http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&target=download_file&articleid=3081&attachid=1
Автор: javastic |