zoukankan      html  css  js  c++  java
  • 如何用自己的图片作程序背景

    参考资料:http://www.devdiv.net/viewthread.php?tid=2667&highlight=Grid

    步骤:

    1、*Ui.cpp源文件

    在构造函数ConstructL()中:

    BaseConstructL(EAknEnableSkin),让程序支持皮肤功能。

    2、 MMP文件

    START BITMAP bg.mbm
        HEADER
         SOURCEPATH ..icons
         SOURCE c12     bg.bmp
    END

    在项目的文件目录下新建一个icons文件夹,里面添加想要的背景图片,这里是bg.bmp;

    当然,这个可以自己定制。

    3、Container.h头文件

    // FORWARD DECLARATION
    class CAknsBasicBackgroundControlContext;

    该类的头文件:AknsBasicBackgroundControlContext.h

    库:AknSkins.lib

    添加成员变量:

    CAknsBasicBackgroundControlContext* iBackGround;

    4、Container.cpp源文件

    添加头文件:

    #include <AknsBasicBackgroundControlContext.h> //for CAknsBasicBackgroundControlContext
    #include <AknsDrawUtils.h> //for AknsDrawUtils, CAknsItemDef and MAknskinInstance
    #include <AknUtils.h> //for CompeleteWithAppPath()
    #include <bg.mbg> //Background file

    ConstructL()中添加:

    iBackGround = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain, Rect(), EFalse );
    MAknsSkinInstance
    * skin = AknsUtils::SkinInstance();
    _LIT(KBitmapPath,
    "bg.mbm");
    TFileName bitmapFile (KBitmapPath);
    User::LeaveIfError(CompleteWithAppPath(bitmapFile));
    CAknsItemDef
    * mainBgItemDef = AknsUtils::CreateBitmapItemDefL(KAknsIIDQsnBgAreaMain,bitmapFile,EMbmBgBg);
    skin
    ->SetLocalItemDefL( mainBgItemDef );

    SizeChanged()中添加:

        if ( iBackGround )
            
    {
            iBackGround
    ->SetRect( Rect() );
            
    if ( &Window() )
                iBackGround
    ->SetParentPos( PositionRelativeToScreen() );
            }

    Draw() 中添加:

    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
    MAknsControlContext
    * cc = AknsDrawUtils::ControlContext( this );
    AknsDrawUtils::Background( skin, cc, 
    this, gc, aRect );

    添加成员函数:

    TTypeUid::Ptr CModel2ndContainer::MopSupplyObject(TTypeUid aId)
        
    {
        
    if(aId.iUid == MAknsControlContext::ETypeId && iBackGround)
            
    {
            
    return MAknsControlContext::SupplyMopObject( aId, iBackGround);
            }

        
    return CCoeControl::MopSupplyObject( aId );
        }

    别忘了先在头文件中声明,这个函数不知道在哪里被调用,但是必须要有。

    析构函数添加:

    delete iBackGround;

    这样,程序编译、运行后应该就能看见自定义的背景了,HF!:)

  • 相关阅读:
    初学者对Python的认知
    html5中table标签的延伸
    表格和表单
    html5行级标签
    块级标签
    分布式NoSQL数据库Cassandra集群搭建
    Grafana 邮箱报警测试之Failed to send alert notifications问题解决
    Elasticsearch启动之Exception in thread "main" java.nio.file.AccessDeniedException问题解决
    Mysql 主从同步之Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'问题解决
    Filebeat (7.3.2)启动脚本
  • 原文地址:https://www.cnblogs.com/zziss/p/2176033.html
Copyright © 2011-2022 走看看