linux 使用SDL_SetWindowIcon()时无窗口图标

axr492tv  于 2023-02-11  发布在  Linux
关注(0)|答案(2)|浏览(244)

我目前正在用C++开发一个使用SDL 2的游戏,我想为任务栏和Alt-Tab切换器设置游戏图标。我正尝试使用SDL_SetWindowIcon()来实现这一点:

SDL_Surface* icon = IMG_Load("icon.png");
SDL_SetWindowIcon(sdlWindow, icon);

即使我的窗口初始化正确,界面也已加载,图标也不会出现在任务栏或Alt-Tab切换器中。
有人知道我哪里做错了吗?

dldeef67

dldeef671#

我不能说我理解这个功能的工作原理,但我可以和您分享一下我是如何使它工作的。即使我可以在www.example.com _app文件中使用600x600(像素)的图像desktop.my,并且使用该启动器也能正常工作,SDL2却不能加载600x600的图像。我也尝试了128x128,但还是不行。
将图像大小更改为64x64奇迹般地修复了它。存储问题?我不知道为什么SDL2可以处理应用程序其他部分的巨大SDL_Surface,但不能处理窗口图标...

yrefmtwq

yrefmtwq2#

如果你通过IDE设置图标,它将出现在任何地方,我的意思是任何地方,如文件资源管理器,任务栏,SDL窗口或其(exe)快捷方式等,而不是走这条艰难的道路。
对于Visual Studio,请遵循以下步骤。您需要使用. ico文件。您不能使用PNG图像文件作为可执行文件的图标,它将不工作。你必须使用。ico。有在线转换器可用于图像到。ico文件。我会推荐这个https://convertico.com/,因为它是多个图标在一个文件选项,许多工具不提供(这不是促销/广告)用于您的exe的ico将是资源ID最小的ico。要更改. ico
1.打开"视图"〉"资源视图"(位于"视图"菜单中间),或按Ctrl + Shift + E使其出现。
1.在资源视图中,右键单击项目名称,然后右键单击"ADD"-〉"RESOURCE ..."

1.单击"图标",然后从许多项目的列表中,然后单击"导入.."

1.当文件选择将打开时,*. ico文件不会列出,并且您不能使用常规PNG或JPG图像作为图标,因此使用下拉菜单将文件过滤器更改为 *. ico。

1.现在你已经完成了。你可以看到到处都有这个图标

1.如果出于某种原因将一组ICO文件加载到项目中,请确保希望Visual Studio使用的. ico在resource. h中具有最小的id。您可以手动编辑此文件,不会出现任何问题
例如:

//resource.h
#define IDI_ICON1                       102
#define IDI_ICON2                       103

使用IDI_ICON1

//resource.h
#define IDI_ICON1                       106
#define IDI_ICON2                       103

现在使用IDI_ICON2。

相关问题