Symbian 建立播放器介面

來源:互聯網
上載者:User

 

Symbian中一般位元影像載入,一般可以通過先產生mbm檔案,然後通過載入bitmap的方法來顯示位元影像!
建立.mbm檔案有兩種方法,一種在編譯過程中自動建立,也可以使用bmconv工具手動建立。
1.編譯過程中建立

      需要在程式的MMP檔案中添加以下內容:

      start bitmap target-file
          [targetpath target-path ]
          [header ]
          [sourcepath source-path ]
          source color-depth source-bitmap-list
      end
 例如:
 START BITMAP OggInco.mbm
 HEADER
 TARGETPATH /system/apps/Ogg
 SOURCEPATH ../Bitmaps
 SOURCE C12 Ogg.bmp
 END

      target-file是產生的MBM檔案的檔案名稱
      targetpath 是可選項。如果未指定,MBM檔案將產生在該應用程式的目錄
      header 也是可選項。如果指定該關鍵字,將在epoc32/include目錄下產生一個.mbg的標頭檔。產生的.mbg標頭檔中包含每一個位元影像的枚舉值,在資源檔中需要此檔案中產生的枚舉值。此例產生 EMbmOggincoOgg
      sourcepath 指定原始Windows BMP檔案的位置。
      source 該語句後的所有BMP檔案必須是同樣的色深。如果需要在一個單獨的MBM檔案中包含不同色深的BMP檔案,必須指定多個source。
   
2.使用bmconv工具建立

      輸入如下命令:

      bmconv sprites.mbm /c12ship.bmp /c12bullet.bmp /c12alien.bmp

      在bmconv命令後使用/u選項,可以從MBM檔案中提取BMP檔案,得到的BMP檔案色深都是24。也可以使用在命令後指定/v選項來顯示MBM檔案的內容。在命令列下輸入bmconv,查看它支援的所有選項。

mmp在Bitmap的.h檔案裡給其一個枚舉型的ID的數字,這個ID數字產生在系統檔案夾下,(epoc32include).Bitmap檔案可以使用其ID數字在mbm檔案中被存取,每一個ID都以下面的格式構造EMbm<MBM file name><bitmap file name>, 例如EMbmOggincoOgg

可以通過如下方法顯示bitmap檔案
CFbsBitmap* iBitmap;

void CTestGuiAppView::ConstructL(const TRect& aRect)
 {
 .....
 iBitmap = LoadMyBitmapL();
 }

CFbsBitmap* CTestGuiAppView::LoadMyBitmapL()
 {
 
 _LIT(KMbmFileName,"//system//apps//Ogg//OggInco.mbm");

     TFileName app = CEikonEnv::Static()->EikAppUi()->Application()->AppFullName();
    TParsePtr parser(app);
    TFileName mbmFile = parser.Drive();
    mbmFile.Append(KMbmFileName);
    CFbsBitmap* iBgBmp = new (ELeave) CFbsBitmap();
    User::LeaveIfError(iBgBmp->Load(mbmFile, EMbmOggincoOgg));

 return iBgBmp ;
 }

void CTestGuiAppView::Draw(const TRect& /*aRect*/) const
 {
 ......
 gc.BitBlt(TPoint(10,10),iBitmap);

 }
最後別忘了添加#includ的檔案lib檔案和在解構函式中delete iBitmap;

 

 

1. 擷取MBM檔案名稱
如果這個MBM檔案放在應用程式的目錄下:
  如果跟你的應用程式同名,則可以用下面的方法擷取:

TFileName mbmFile = CEikonEnv::Static()->EikAppUi()->Application()->BitmapStoreName();

  如果不同名,則可以只定義檔案名稱,然後用下面的方法補全路徑名:

#include <aknutils.h> // for CompleteWithAppPath()

_LIT(KMbmFileName, "images.mbm");
TFileName mbmFile = CompleteWithAppPath(mbmFile);

如果沒在同一個目錄下,則可以如下方法擷取應用程式的檔案名稱,從它的開頭能查到盤符,加上你自己定義的路徑和檔案名稱就行了。

TFileName appFile = CEikonEnv::Static()->EikAppUi()->Application()->AppFullName();

2. 載入位元影像
除了用位元影像的Load()方法,還可以用下面這個辦法:

CFbsBitmap* bitmap = CEikonEnv::Static()->CreateBitmapL(mbmFile, EMbmHelloworldImage1);

好處是省了自己建立CFbsBitmap對象。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.