wxWidgets设置wxFrame图标

也可以参考https://blog.csdn.net/sq8706/article/details/118342706这篇文章。

--------------------------------------------------------------------------------------------------------------------------------

simple.h文件

class Simple:public wxFrame
{
public:
    Simple(const wxString& title);
};

simple.cpp文件

#include "web.xpm"//这个是xpm文件的名称

Simple::Simple(const wxString& title)
    :wxFrame(NULL,wxID_ANY,title,wxDefaultPosition,wxSize(200,150))
{
    SetIcon(wxIcon(web_xpm));//这个是xpm文件里static char *后面的变量名称 
    //SetIcon(wxIcon("a.ico",wxBITMAP_TYPE_ICO));//如果使用ico文件,这样用也是正确的。

    //wxInitAllImageHandlers();//如果不用wxImage::AddHandler(...);用这句也行,但不知为啥一开始不好用。

     //PNG图标需要增加AddHandler
    //wxImage::AddHandler(new wxPNGHandler);
    //SetIcon(wxIcon("accerciser.png",wxBITMAP_TYPE_PNG));

     //不使用#include "web.xpm",则使用以下2句
    wxImage::AddHandler(new wxXPMHandler);
    SetIcon(wxIcon("web.xpm",wxBITMAP_TYPE_XPM));

    Centre();


}
 

注意

1.官方文档里说,xpm文件里的图标只能是16 或是 32的大小。

2.如果出现warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|这个警告,你可以把xpm文件里的static  char *name_xpm改成static const char *name_xpm就行了。

其它问题

网上有说
    SetIcon(wxIcon(wxT("web.xpm")));//

为啥我的这么做不行呢?

有可以告知的么?

没有知道的么?俺自己

在C++中使用wxWidgets库创建一个带有彩色标题栏的`wxFrame`窗口,你可以通过自定义`wxWindow`的样式并使用`wxTextAttr`来改变文字颜色。以下是一个简单的示例: ```cpp #include <wx/wx.h> #include <wx/window.h> #include <wx/textattr.h> class MyFrame : public wxFrame { public: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame(NULL, -1, title, pos, size, wxDEFAULT_FRAME_STYLE | wxTAB_TRAVERSAL) // 添加窗口风格以便支持文本属性 { SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)); // 设置背景色 // 创建一个动态文本标签 wxStaticText* staticText = new wxStaticText(this, -1, "彩色标题", wxDefaultPosition, wxSize(200, 50), wxALIGN_CENTRE); // 使用wxTextAttr设置标题颜色 wxTextAttr attr; attr.SetTextColour(wxRED); // 红色 attr.SetFont(*wxBLACK); // 黑体字体,可以根据需要调整 staticText->SetFont(attr.GetFont()); // 设置文本字体属性 // 为了展示文字颜色效果,可以循环显示不同颜色 for (size_t i = 0; i < 10; ++i) { attr.SetTextColour(GetNextColor()); // 自定义获取下一个颜色,例如彩虹色序列 UpdateTitleColor(); // 更新标题的颜色 } } private: void UpdateTitleColor() { Refresh(); this->Update(); // 刷新窗口内容 Sleep(200); // 暂停一段时间以观察颜色变化 } wxArrayString colors = { wxRED, wxGREEN, wxBLUE, wxCYAN, wxMAGENTA, wxYELLOW, wxWHITE, wxBLACK }; // 颜色数组 size_t currentColorIndex = 0; wxColour GetNextColor() const { if (currentColorIndex == colors.size()) currentColorIndex = 0; return colors[currentColorIndex++]; } }; int main(int argc, char** argv) { wxInitAllImageHandlers(); MyFrame frame("彩色标题示例", wxDefaultPosition, wxSize(400, 300)); frame.Show(true); return wxApp::MainLoop(); } ``` 在这个例子中,我们首先创建了一个`MyFrame`类,它从`wxFrame`派生,并设置了窗口的一些基本属性。然后,在构造函数里,我们动态地改变了`wxStaticText`的文本颜色,并创建了颜色循环。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值