在Symbian程序中使用图标

Symbian中的图片主要两种:程序图标(像Win里的桌面图标和程序左上角的图标),界面用到的图片(各种美化用的图片)。
1.图标的使用

利用PhotoShop,画图等图片编辑工具,分别制作24*24,32*32,24*24三种大小的图片(Symbian中各种视图显示用),需要设置成透明的部分用一种颜色填充(最好能与要显示的部分区别开来),最后存储为.BMP格式。

启动AIFBuilder,选择New新建一个工程,选择Action->create mbm,出现一个新的界面,有三个标签分别对应三种分辨率;在每个标签里分别选择File->load载入相应大小的图片,这时左面的编辑区显示出刚刚载入的图片,选择左面第三个按钮(像索套的那个按钮),选择不需要显示的部分,这时右面编辑区出现一个黑白的图片,叫做掩图,其中黑色部分是将来要显示的部分,白色是设为透明的部分。编辑好相应的掩图后,点击Action-Generate,进行部分选项的设置。点击Generate按钮,生成6个图片(三个原图,3个掩图),一个.mbm文件(6个图片的整合),一个.mkg(?)文件,一个.rss文件(保存一个图片的枚举)……

2.图片的使用………………



总结:

一. 前言
图片在S60中主要分两种用途,一种是做为应用程序的图标(像Windows的桌面图标)显示在程序启动列表中,一种是起美化作用的图片。下面分别说明具体用法。

二. 概念的解释
.mbm文件

S60在访问图片时并不是访问.bmp本身,而是访问经过压缩之后的.mbm文件。

掩图

S60要显示的图片必须有一个与其对应的掩图文件,掩图中用黑色表示显示的部分,而用白色部分表示不显示部分,存储为黑白位图格式。

.aif文件

存放应用程序图标和标题,以及其他一些与应用程序性能相关的信息。没有aif的应用程序会显示默认得系统图标(蓝色像拼图的那个图标)和与文件名相同的标题。

三. 图标的使用
Ø 首先利用图片编辑工具(PhotoShop,画图等)制作同样内容的图片3张,大小分别为:48*48,32*32,24*24(单位像素),存储为扩展名为.bmp的位图格式文件。

比如: ……(怎么不能上传图片?)这三张图片将分别在不同的视图中显示。

Ø 打开AIFBuilder,选择File->New,在第一个标签中输入应用程序名和UID;在第二个标签输入要生成mbm文件的路径,掩图的路径和其他临时文件的路径;在第三个标签选择语言;最后一个标签用默认设置。(需要注意:UID要和.mmp中第二个UID一致)

Ø 选择菜单Action->Create MBM,分别load三种大小的图片并编辑对应的掩图(点击按钮……(怎么不能上传图片?),选择不需要显示的像素点,再右面的编辑区会自动生成掩图),点击保存。

Ø 将生成的6张图片(三张原图,三张掩图)和一个.rss文件复制到工程目录下的aif目录下,没有的话需要手动建一个。

Ø 编辑工程的.mmp文件,加入AIF定义:

Ø AIF HelloWorldPlus.aif ../aif HelloWorldPlus.rss / c24 helloWorldPlusicon.bmp helloWorldPlusiconmask.bmp helloWorldPlusicon_lst.bmp helloWorldPlusicon_lst_mask.bmp

Ø HelloWorldPlus.aif是指定要生成的aif的名称,/aif是指定aif文件使用的.rss和.bmp等文件的源目录, HelloWorldPlus.rss 是刚才工具生成的Rss文件名称, /24说明是24位色深的图片,后面分别按顺序列出图片名称,屏蔽的位图必须紧跟相应的原图,中间以空格分隔。

Ø 进入工程目录的/group文件夹。

Ø 用bldmake bldfiles生成abld.bat文件。

Ø 用abld makefile vc6重新生成工程。

Ø 用abld build wins udeb 重新编译工程。

Ø 启动SDK,就可以看到程序的新图标了。

四. 图片的使用
Ø 用同样的方法制作图片和对应的掩图,存放到工程目录下的datasrc目录。

Ø 编辑工程的.mmp文件,加入.mbm的定义:

n START BITMAP HellWorldPlus.mbm ―――标记位图转换数据的开始,并指定.mbm多重位图文件的文件名

n HEADER ―――指定创建符号ID文件HelloWorldPlus.mbg,文件包含一个枚举,分别代表每个图片。

n TARGETPATH /system/apps/HELLOWORLDPLUS

n SOURCEPATH ../DataSrc ―――指定位图文件的存放位置

n SOURCE C24 2_24x24i.bmp ―――依次列出一个或多个要放入.mbm中的位图文件的色深和文件名。

n SOURCE C24 2_24x24m.bmp

n SOURCE C24 2_32x32i.bmp

n SOURCE C24 2_32x32m.bmp

n SOURCE C24 2_48x48i.bmp

n SOURCE C24 2_48x48m.bmp

n END ―――标记位图转换数据的结束

Ø 进入工程目录下的group目录,运行abld build wins udeb,自动在编译目录下(C:/Symbian/7.0s/Series60_v21_C/Epoc32/release/wins/udeb/z/system/apps/HELLOWORLDPLUS/)生成.mbm文件并在epoc/include目录下生成.mbg文件。生成的.mbg文件的内容是:

n // HELLWORLDPLUS.mbg

n // Generated by BitmapCompiler

n // Copyright (c) 1998-2001 Symbian Ltd. All rights reserved.

n //

n

n enum TMbmHellworldplus

n {

n EMbmHellworldplus2_24x24i,

n EMbmHellworldplus2_24x24m,

n EMbmHellworldplus2_32x32i,

n EMbmHellworldplus2_32x32m,

n EMbmHellworldplus2_48x48i,

n EMbmHellworldplus2_48x48m

n }; ―――在接下来的资源文件中要用到这些枚举值。

Ø 编辑资源文件,加入include语句#include <helloworldplus.mbg>,在需要设置图片的部分(比如一个Dialog)添加bmp资源的定义:

n items =

n {

n DLG_LINE

n {

n type = EAknCtQuery;

n id = EGeneralQuery;

n control = AVKON_CONFIRMATION_QUERY

n {

n layout = EConfirmationLayout;

n bmpfile = “*”; ――指定mbm文件的路径,如果使用*号,.mbm文件和.app文件的文件名必须相同,并且必须位于同一个目录中。否则要用#define定义一个,比如:#define AKNEXLIST_BMP_FILENAME "//system//apps//aknexlist//aknexlist.mbm"

n bmpid = EMbmHellworldplus2_24x24i; ――前面.mbg文件中 的枚举值,这是要显示的图片

n bmpmask = EMbmHellworldplus2_24x24m; ――前面.mbg文件中的枚举值,这是掩图

n };

n }

n };

定义好资源文件,图片就可以正常的显示了,如果要对图片进行操作(如改变图片)就要编写源代码来实现,iEikonEnv->CreateIconL( KAknExListMbmFileName, EMbmAknexlistCheck, EMbmAknexlistCheckm )这将创建一个图片对象。
 

猜你喜欢

转载自blog.csdn.net/ArtX/article/details/1827606