一个wxIcon代表一个小的位图,它总有一个透明遮罩,它的用途包括:
下表列出了图标类的主要成员函数
函数 | 说明 |
---|---|
wxIcon | 图标类可以通过指定另外一个图标类的方式,指定XPM数据(char**)的方式,原始数据(char[])的方式,或者文件名及文件类型的方式创建。 |
CopyFromBitmap | 从wxBitmap类创建一个图标。 |
GetWidth,GetHeight | 返回图标的大小。 |
Getdepth | 返回图标的颜色深度。 |
LoadFile | 从文件加载图标。 |
Ok | 在图标数据已经具备的时候返回True。 |
创建一个wxIcon
wxIcon可以使用XPM数据创建,或者从一个wxBitmap对象中创建,或者从文件(比如一个Xpm文件)中读取。wxWidgets也提供了类似于前一小节提到的wxBITMAP类似的宏,用来从一个平台相关的资源中获取图标。
在windows平台上,LoadFile以及同等性质的操作可以使用的文件类型包括BMP图片和ICO文件,如果你要从其它图片格式中创建图标,可以先将其读入一个wxBitmap对象中,然后再将其转换为一个图标。
而在Mac OSX和 Unix/Linux的GTK+版本中,wxIcon可以识别的图片类型和wxBitmap可以识别的图片类型是一样的。
下面代码演示了创建一个wxIcon对象的几种方法:
// 方法1: 从XPM数据创建
#include "icon1.xpm"
wxIcon icon1(icon1_xpm);
// 方法2: 从一个ICO资源中创建(Window and OS/2 only)
wxIcon icon2(wxT("icon2"));
// 方法3: 从一个图片文件中 (Windows and OS/2 only)
// 如果你的图片包含多个图标你可以指定单个图标的宽度
wxIcon icon3(wxT("icon3.ico"), wxBITMAP_TYPE_ICO, 16, 16);
// 方法4: 从位图创建
wxIcon icon4;
wxBitmap bitmap(wxT("icon4.png"), wxBITMAP_TYPE_PNG);
icon4.CopyFromBitmap(bitmap);
使用wxIcon
下面的代码演示了wxIcon的三种使用方法:设置窗口图标,增加到一个图片列表或者绘制在某个设备上下文上
#include "myicon.xpm"
wxIcon icon(myicon_xpm);
// 1: 设置窗口图标
frame->SetIcon(icon);
// 2: 增加到wxImageList
wxImageList* imageList = new wxImageList(16, 16);
imageList->Add(icon);
// 3: 在(10, 10)的位置绘制
wxClientDC dc(window);
dc.DrawIcon(icon, 10, 10);
将某个图标绑定到应用程序
将某个图标绑定到应用程序,以便系统可以显示这个图标在合适的位置,使得用户可以通过点击图标的方式打开应用程序,这个工作wxWidgets是做不到的。这是极少的你需要在不同的平台使用不同的技术的领域中的一个。
在windows平台上,你需要在makefile中增加一个资源文件(扩展名是.rc),并且在这个资源文件中指定一个图标区域,如下所示:
aardvarkpro ICON aardvarkpro.ico
#include "wx/msw/wx.rc"
在这里,aardvarkpro.ico就是这个和应用程序绑定的图标的名称,它可以有多种分辨率和颜色深度(典型的大小包括48x48,32x32和16x16)。当windows的资源管理器需要显示某个图标的时候,它将使用字母顺序排在第一个的那个图标,因此你最好给确定要作为应用程序图标的那个图标的名称前面加几个a字母以便按照字母顺序它排在前面,否则你的应用程序可能绑定的是你不期望的图标。
在Mac系统上,你需要准备一个应用程序包,其中包含一些ICNS文件。参考第20章"让你的程序更完美",来获得关于程序包更多的信息,其中的主要文件Info.plist文件看上去应该象下面的额样子:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>pjd</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>dialogblocks-doc.icns</string>
<key>CFBundleTypeName</key>
<string>pjdfile</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
</dict>
</array>
<key>CFBundleIconFile</key>
<string>dialogblocks-app.icns</string>
...
应用程序图标和应用程序相关的文档类型图标是由CFBundleIconFile和CFBundleTypeIconFile属性指定的。你可以直接用Apple提供图标编辑器编辑ICNS文件,不过如果你希望所有的平台使用同样的图标,你最好现用PNG图片创建各种大小的图标,然后再将它粘贴到各个平台上的图标编辑器中,要确保PNG使用的透明遮罩颜色和各个工具使用的透明颜色相一致。
而在linux平台上,Gnome桌面系统和KDE桌面系统则各自拥有自己的图标提供体系,我们将在第20章进行简要的描述。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。