XPM(X Pixmap)是X Windows系统使用的一种图片文件格式。最初由位于法国Sophia Antipolis的Bull研究中心的Daniel Dardailler和Colas Nahaboo发明,后来Arnaud Le Hors对其进行了改进。
XPM主要用于创建图标位图文件,并支持“transparent color”功能。XPM文件格式源自更早的X BitMap(XBM),是一种符合C语言语法的纯文本文件。
它可以通过#include语句可以将XPM格式的图形数据导入C语言源文件中。
基本格式:
static char *<variable_name>[] = {
<Values>
<Colors>
<Pixels>
<Extensions>
};
例子:
/* XPM */
static char *xface[] = {
/* Values */
"48 4 2 1",
/* Colors */
"a c #ffffff",
"b c #000000",
/* Pixels */
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
};
在wxWidgets使用xpm文件:
可以使用XnConvert将图片转换成xpm文件。
在wxWidgets代码中,先include xpm文件,再用SetIcon(wxIcon(qiang_xpm))来使用;这里的qiang_xpm就是xpm文件中所定义的静态变量。
#include "qiang.xpm"
MyFrame::MyFrame(const wxString &title) : wxFrame(NULL, wxID_ANY, title)
{
SetIcon(wxIcon(qiang_xpm));
wxMenu *fileMenu = new wxMenu;
wxMenu *helpMenu = new wxMenu;
helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("Show about dialog"));
fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"), wxT("Quit this program"));
wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(fileMenu, wxT("&Fie"));
menuBar->Append(helpMenu, wxT("&Help"));
SetMenuBar(menuBar);
CreateStatusBar(2);
SetStatusText(wxT("Welcome to wxWidgets!"));
}
结果: