讓變化成為計(jì)劃的一部分

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

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

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

          [JavaME]手機(jī)上如何繪制半透明圖片

          windcao提供了一個(gè)CreateAlphaImage方法

          Windcao提供的CreateAlphaImage的意思是這樣的“如果需要半透明可以先在image上畫,然后把這個(gè)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處理。所以繪制的圖片覆蓋了原來的文字。

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



          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 );
                      
              
          /*
               * 繪制一個(gè)半透明的前景圖片,剛好就貼在StringKeyItem的文字上,還可以顯示底色以及文字
               
          */

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

           

          實(shí)踐效果還是不錯(cuò)的。

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

          主站蜘蛛池模板: 随州市| 侯马市| 呼图壁县| 湖口县| 如东县| 芜湖县| 荃湾区| 高要市| 清河县| 阿坝县| 渭源县| 通化县| 慈利县| 专栏| 榆树市| 五指山市| 汉中市| 东光县| 手游| 平安县| 南溪县| 金堂县| 南宁市| 安义县| 开化县| 晋中市| 沙田区| 大兴区| 胶州市| 嫩江县| 无极县| 天气| 射阳县| 会理县| 梅河口市| 宁阳县| 中山市| 吉首市| 昂仁县| 交城县| 民权县|