zoukankan      html  css  js  c++  java
  • 手机上如何绘制半透明图片[JavaME]

     

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

  • 相关阅读:
    【校招面试 之 C/C++】第23题 C++ STL(五)之Set
    Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server "xxxxxxx".
    Redhat Linux安装JDK 1.7
    ORA-10635: Invalid segment or tablespace type
    Symantec Backup Exec 2012 Agent for Linux 卸载
    Symantec Backup Exec 2012 Agent For Linux安装
    You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
    YourSQLDba介绍
    PL/SQL重新编译包无反应
    MS SQL 监控数据/日志文件增长
  • 原文地址:https://www.cnblogs.com/zhengyun_ustc/p/CreateAlphaImage.html
Copyright © 2011-2022 走看看