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的定义:
START BITMAP HellWorldPlus.mbm ―――标记位图转换数据的开始,并指定.mbm多重位图文件的文件名
HEADER ―――指定创建符号ID文件HelloWorldPlus.mbg,文件包含一个枚举,分别代表每个图片。
TARGETPATH \system\apps\HELLOWORLDPLUS
SOURCEPATH ..\DataSrc ―――指定位图文件的存放位置
SOURCE C24 2_24x24i.bmp ―――依次列出一个或多个要放入.mbm中的位图文件的色深和文件名。
SOURCE C24 2_24x24m.bmp
SOURCE C24 2_32x32i.bmp
SOURCE C24 2_32x32m.bmp
SOURCE C24 2_48x48i.bmp
SOURCE C24 2_48x48m.bmp
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文件的内容是:
// HELLWORLDPLUS.mbg
// Generated by BitmapCompiler
// Copyright (c) 1998-2001 Symbian Ltd. All rights reserved.
//
enum TMbmHellworldplus
{
EMbmHellworldplus2_24x24i,
EMbmHellworldplus2_24x24m,
EMbmHellworldplus2_32x32i,
EMbmHellworldplus2_32x32m,
EMbmHellworldplus2_48x48i,
EMbmHellworldplus2_48x48m
}; ―――在接下来的资源文件中要用到这些枚举值。
编辑资源文件,加入include语句#include <helloworldplus.mbg>,在需要设置图片的部分(比如一个Dialog)添加bmp资源的定义:
items =
{
DLG_LINE
{
type = EAknCtQuery;
id = EGeneralQuery;
control = AVKON_CONFIRMATION_QUERY
{
layout = EConfirmationLayout;
bmpfile = “*”; ――指定mbm文件的路径,如果使用*号,.mbm文件和.app文件的文件名必须相同,并且必须位于同一个目录中。否则要用#define定义一个,比如:#define AKNEXLIST_BMP_FILENAME "\\system\\apps\\aknexlist\\aknexlist.mbm"
bmpid = EMbmHellworldplus2_24x24i; ――前面.mbg文件中 的枚举值,这是要显示的图片
bmpmask = EMbmHellworldplus2_24x24m; ――前面.mbg文件中的枚举值,这是掩图
};
}
};
定义好资源文件,图片就可以正常的显示了,如果要对图片进行操作(如改变图片)就要编写源代码来实现,iEikonEnv->CreateIconL( KAknExListMbmFileName, EMbmAknexlistCheck, EMbmAknexlistCheckm )这将创建一个图片对象。