讓變化成為計劃的一部分

          歡迎大家探討本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的代碼共享和思路提供!

          主站蜘蛛池模板: 黎平县| 乡宁县| 龙门县| 阳西县| 邯郸市| 密山市| 永丰县| 文登市| 平度市| 梁平县| 庆安县| 乾安县| 定州市| 花垣县| 卢湾区| 高淳县| 博野县| 汨罗市| 清水县| 寿光市| 会东县| 石家庄市| 武冈市| 织金县| 周至县| 鄂尔多斯市| 海丰县| 梁平县| 林周县| 水富县| 榕江县| 洛扎县| 宝兴县| 汕尾市| 通山县| 洪泽县| 故城县| 巴中市| 宿州市| 深水埗区| 温宿县|