gpt4 book ai didi

c++ - wxWidgets - 如何嵌入 .ico 和 .png 图像并用于绘制工具栏项目

转载 作者:行者123 更新时间:2023-11-30 04:25:02 29 4
gpt4 key购买 nike

我想创建工具栏项并从程序内存中的图像而不是磁盘上的文件绘制它们。我更愿意使用资源文件 (.rc) 嵌入图像,但如果我需要以某种方式滚动自己的图像,那也可以。

图像文件为 .ico 和 .png。

假设我可以使用 .rc 文件中的内容,我该如何完成这段代码?

void MyFrame::AddToolBarItem(int ID, wxSize sz, const char* file, const char* short_help, const char *long_help) {
const char *end = file+strlen(file);
const char *dot = std::find(file, end, '.');
if(dot != end) {
// It's an external file, with an extention, like .ico or .png
wxImage im(file);
im.Rescale(sz.x, sz.y, wxIMAGE_QUALITY_HIGH);
wxBitmap bmp(im);
my_tool_bar->AddTool(ID, short_help, bmp, long_help);
} else {
// It's a resource
// What now, StackOverflow???
}
}

编辑:好的,我会让它更容易。忘记重新缩放。我可以用 Gimp 图片编辑器做到这一点。假设图像大小合适。您也可以假设它们是 .ico 或任何对 wxWidgets 方便的格式。

编辑 2:我接受了一个答案,但我决定最好只是“手动”嵌入图像,完全避免 .rc 概念。我写了一个小程序来创建一个带有静态初始值设定项的 .cpp 文件,但可以在网上找到它们。当编译到程序中时,.cpp 文件会在只读内存中创建图像文件的拷贝。 .rc 文件是特定于 Windows 的,因此最好避免将它用于自定义图标和光标,以实现可移植性。但是,在 MS 项目中有一个仅包含“#include ”行的 .rc 文件确实有意义,这将允许访问一些默认可用的股票游标等在其他平台上。

最佳答案

不支持从 wx 本身的资源中加载 PNG,但在您的代码中很容易做到这一点,请参阅 http://wiki.wxwidgets.org/Embedding_PNG_Images#Embedding_PNG_images_into_Windows_rc_file

关于c++ - wxWidgets - 如何嵌入 .ico 和 .png 图像并用于绘制工具栏项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361543/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com