图片半透明处理.txt
ï??
J2MEå›?片å?Šé??æ??å,„ç?†(ä??ç??å›?片åƒ?ç? )(ä?…éƒ?分手机æ??挕)2010-01-16 01:43å…?å??å??æ??把ä??å? å›?çš„argbå??éƒ?å ?出æ?,å??åœ?ä??ä?ªæ??å?‹æ??ç?„里ï?
ˆç??Imageå??è??çš„getRGBæ??æ??ï?‰ï?Œç„?å??ç??å?ªç??é??ä??ä??æ??argbå??å??æœ?é??ä??ï?ˆæœ?é??ä?
çš„8ä?ª2è?›åˆ?å??ä??è??了é??å??æ??é?šé??ä?Ÿä??ä??ä?ˆçš„ï?Œå??æ??å??æ??é??æ??åº?
ï?‰ï?Œå†?ç??Graphics
çš„drawRGBæ??æ??ä?,é‚?ä?ªä??æ??å??çš„æ??å?‹æ??ç?„ä?ºå?‚æ??ç??出å›?åƒ?ã?‚
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Midlet extends MIDlet
{
private Display display;
private TCanvas tc;
public void startApp()
{
this.display = Display.getDisplay(this); this.tc = new TCanvas();
this.display.setCurrent(tc);
}
public void pauseApp()
{
}
public void destroyApp( boolean unconditional ) {
}
}
======================================================================
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image;
public class TCanvas extends Canvas {
Image image;//è??å,„ç?†çš„å›?片
int argb[];
public TCanvas()
{
super();
try
{
//创å?ºå›?片å??è??(å??å?Ÿå?‹å›?片,ä??é??æ??)
image = Image.createImage( "/qq.png" ); } catch( IOException e )
{
e.printStackTrace();
}
//ä?‹é??æ?,éª,è?›è?Œå›?片é??æ??å,„ç?†
argb = new int[ image.getWidth() * image.getHeight() ];
image.getRGB( argb, 0, image.getWidth(), 0, 0, image.getWidth(),
image.getHeight() );//è??å??å›?片的ARGBå??
int a = 100;//把è??ç? çš„é??æ??åº?éƒ?è??ç??ä?º100
for( int i = 0; i < argb.length; i ++ ) {
argb[i] = ( a << 24 ) | ( argb[i] & 0x00FFFFFF );// ä??æ??æœ?é??2ä??çš„å?? }
}
protected void paint( Graphics g ) {
//æ?…å?
g.setColor(0xffffff);
g.fillRect(0,0,this.getWidth(),this.getHeight()); g.setColor(0);
g.drawImage(image,0,0,Graphics.TOP|Graphics.LEFT); g.drawRGB(argb,0,image.getWidth(),0,100,image.getWidth(),image.getHeight(),true)
;// ç??è??ç? æ??ç?„
}
}
=======================================================================
è??æ??:
åœ?PNG里æ? ä?ªè??ç? æ??ä??ä?ªARBGæ ?å??ï?Œæ??ä??ä?ª8ä??çš„å??å…?è?›åˆ?çš„æ??å??
ï?Œæ??å?‚0xff121212ï?Œè??ä?ªä?œè,?æ??è??了å›?片的ä??ä?ªè??ç? ï?Œæˆ?ä??å ?ä??é
?šè?‡ Imageç??ä??çš„getRGB(int[] rgbData, int offset, int scanlength, int x, int y, int width, int height)
æ??æ??è??å??ä??ä?ªrgbDataï?Œè??ä?ªrgbDataå??ä??å??了å›?片æ‰?å??åº?çš„è??ç? ä??
æ??ï?Œå??出è??ç? ä??æ??ä?‹å??æˆ?ä??éœ?è??å??å…?è?›è?Œé??æ??æ?ˆæ?œçš„å,„ç?†ï?Œé?
æ??æ?ˆæ?œçš„å??æ??ä??å??åœ?
8ä??ä??çš„æœ?é??2ä??ï?Œä? å??ä?,把è??ä?ªè??ç? å??è??æ??æˆ?16è?›åˆ?è??出ï?Œä??èˆ?情况ä?‹æœ?é??2ä??åº?è?,éƒ?æ??ä?ºFFï?Œä?Ÿå??æ??ä??é??æ??ï?Œæˆ?ä??ç??åœ?éœ?è??把è??ä?ªFFæ??æˆ?ä??ä?ªæ??ä??å??çš„
å??ï?Œé‚?ä?ˆæˆ?ä??çš„å›?片å??é??æ??了ï?Œæœ?é??ä??ä?º00çš„æ??å??å›?片å??å…?é?
æ??了ã?‚
ã??ã??å…?å??8ä??16è?›åˆ?å??åº?了32ä??çš„2è?›åˆ?ï?Œé‚?ä?ˆæˆ?ä??å??ä?,é?šè?‡ä?‹é??çš„æ??æ??å ?出ä??çš„æœ?é??2ä??ï?š
ã??ã??A =
Argb>>24//把è??ä?ªæ??å??å??ç??åŠ?24ä??ï?Œé‚?ä?ˆå‰?ä?‹çš„8ä??å??æ??æˆ?ä??è??çš„æœ?é??ä??了
ã??ã??ä??æ??ä?‹å??æˆ?ä??å†?é?šè?‡ä?‹é??çš„æ??æ??å??ä?,把ä??å??å›?å?? Argb = a<<24 |( argb & 0x00FFFFFF);
ã??ã??é‚?ä?ˆæˆ?ä??é?šè?‡å?ªç??把è??ä?ªå›?片的æ‰?有è??ç? ä??æ??éƒ?æ??å??ä?‹å?
?ï?Œåœ?ç??æ??å??çš„è??ç? ä??æ??æ?,æ?„é? ä??ä?ªå›?片ï?Œæˆ?è?…è??ä?ªé?šè?‡æˆ?ä??çš„Graphics
ä?‹é??çš„drawRGBæ??æ??ç›?æ?,ç??出æ?,çš„å??æ??ä??ä?ªå?Šé??æ??æ?ˆæ?œçš„å›?片了ï?Œä? å??ä?,åœ?ç??è??ä?ªå›?片ä?‹å‰?å…ˆç??ä??ä?ªå…?ä??çš„å›?片ï?Œè??æ ?ä? å??å ?
ä?,å?ˆæ??æ??åœ?看åˆ?æ?ˆæ?œäº†: