讓變化成為計劃的一部分

          歡迎大家探討本Blog涉及的所有軟件課題。我的Google Talk ID:zhengyun(at)gmail.com。

          我最希望軟件帶給用戶的感受是:美好的體驗、舒適感、簡約、干凈...

          posts - 32, comments - 8, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          [JavaME]手機上如何繪制半透明圖片

          windcao提供了一個CreateAlphaImage方法

          Windcao提供的CreateAlphaImage的意思是這樣的“如果需要半透明可以先在image上畫,然后把這個Image弄成半透明的。最后將Image繪到Canvas上就OK了”。

           他的處理函數(shù)如下所示:

          public static Image CreateAlphaImage(int Alphalike 0x88000000,Image src) {
                  
          int w,h;
                  w
          =src.getWidth();
                  h
          =src.getHeight();        
                  
          int len=wh;
                  
          int srcRgb[]=new int[len];
                  
          int dscRgb[]=new int[len];

                  
          try{
                      src.getRGB(srcRgb,
          0,w,0,0,w,h);
                  }

                  
          catch(Exception ex){
                      ex.printStackTrace();
                  }


                  
          for (int i = 0; i  len; i++{
                   
                          dscRgb[i] 
          = srcRgb[i]+Alpha;
                  }

                  Image result
          =Image.createRGBImage(dscRgb,w,h,true);
                  
          return result;
              }

           

          我在工程中用了,有效果,好像也不需要對原始的Image src有什么特殊要求。

          translucenceCustomItem 
           

          可以與

          directlypaintCustomItem  

          做一下對比。

          后者沒有將圖片作CreateAlphaImage處理。所以繪制的圖片覆蓋了原來的文字。

          我是在一個CustomItem擴展類中使用這個半透明圖片的,代碼如下所示:



          public class StringKeyItem extends CustomItem{
          。。。
                
          private static Image m_imageCommand =
              CommandResources.getImage(CommandResources.IMG_COMMAND);
          。。。
                
          public StringKeyItem( 
                 GUIController control,
                 
          int inIndent, String inText )
                 
          {
          。。。
              m_imageCommand 
          = CreateAlphaImage(0x88000000,m_imageCommand);
                 }


          。。。
              
          public void paint( Graphics g, int w, int h )
                  
          {
          。。。
                     
          // draw the text: word-wrap is an exercise for the reader
                      g.drawString( text, 
                          indent 
          * INDENT_MARGIN + FONT_HEIGHT, 0, g.TOP | g.LEFT );
                      
              
          /*
               * 繪制一個半透明的前景圖片,剛好就貼在StringKeyItem的文字上,還可以顯示底色以及文字
               
          */

              g.drawImage(m_imageCommand, 
                      indent 
          * INDENT_MARGIN + FONT_HEIGHT, 0, g.TOP | g.LEFT);
                  }

           

          實踐效果還是不錯的。

          感謝windcao的代碼共享和思路提供!

          主站蜘蛛池模板: 措勤县| 涿鹿县| 龙井市| 连州市| 思南县| 公主岭市| 湖州市| 建水县| 和林格尔县| 南溪县| 北京市| 嘉定区| 开封市| 双牌县| 廉江市| 牟定县| 张家川| 广河县| 嘉义市| 宜川县| 乐山市| 鲁山县| 鄂伦春自治旗| 江孜县| 颍上县| 涿鹿县| 武乡县| 年辖:市辖区| 平泉县| 万盛区| 苏尼特左旗| 东丽区| 西华县| 琼中| 夏津县| 海丰县| 海兴县| 麻城市| 凯里市| 平安县| 嘉义县|