讓變化成為計劃的一部分

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

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

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

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

          windcao提供了一個CreateAlphaImage方法

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

           他的處理函數如下所示:

          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的代碼共享和思路提供!

          主站蜘蛛池模板: 米林县| 蓝田县| 类乌齐县| 靖西县| 洪雅县| 始兴县| 道真| 梓潼县| 松滋市| 惠州市| 台中县| 诏安县| 清镇市| 同德县| 卢湾区| 兴义市| 峨眉山市| 科技| 清水县| 饶阳县| 灵丘县| 广河县| 克东县| 手游| 宁强县| 平舆县| 抚州市| 长子县| 姚安县| 屏山县| 泗水县| 北宁市| 平武县| 太谷县| 平顶山市| 普兰店市| 水富县| 巴马| 肇东市| 绥滨县| 衡阳市|