将应用程序图标添加到 freepascal/SDL 程序?

Posted

技术标签:

【中文标题】将应用程序图标添加到 freepascal/SDL 程序?【英文标题】:Adding an application icon to a freepascal/SDL program? 【发布时间】:2016-06-23 02:52:33 【问题描述】:

我在 Windows 7 上安装了 freepascal,但没有安装 IDE。

如何为我正在开发的程序添加图标?我使用 Google 搜索过,但大多数结果都指向 Lazarus IDE 论坛。那里的提示似乎都引用了某种我没有的 *.lpi 文件。

谢谢。

[更新]

我让它部分工作。在文件资源管理器中查看 EXE 时,我可以看到该图标。但是在启动应用程序时,图标不会出现在标题栏中。

[更新]

该程序是使用 SDL 的视频游戏。我做了一些研究并收集了以下代码行:

RWop := SDL_RWFromFile('gharena.ico', 'rb');
ICOimage := IMG_Load_RW(RWop, 1);
//ICOcolorkey := SDL_MapRGBA(ICOimage^.format, 0, 0, 0, 0);
//SDL_SetColorKey(ICOimage, SDL_SRCCOLORKEY, ICOcolorkey);
SDL_WM_SetIcon(ICOimage, Nil);

它似乎大部分都有效。该图标同时出现在标题栏和任务栏中。但是,标题栏图标弄乱了透明度。该图标是一个名为“gharena.ico”的 32 位精灵。运行游戏时,图像的透明部分在程序标题栏中呈现为黑色。任务栏图标没问题,透明度合适。

在上面的代码中,您可以看到我在设置颜色键时搞砸了。但这似乎并不重要。

【问题讨论】:

【参考方案1】:

假设您有一个名为 project.ico 的图标文件。

创建一个名为project.rc的文件,内容如下:

ICON_1 ICON "project.ico"

创建一个名为 buildres.cmd 的文件,其内容如下:

@echo off

set path=C:\FPC\3.0.0\bin\i386-win32\

windres.exe -i project.rc -o project.res

pause

当然,不要忘记根据自己的安装来适配FPC bin目录的路径。

双击buildres.cmd。您会得到一个名为 project.res 的文件。

现在,一个测试程序:

program project;

$R project.res

begin
  ReadLn;
end.

【讨论】:

这会将图标添加到文件资源管理器中的可执行文件,但不会在窗口本身处于活动状态和运行时添加。所以这只是部分答案。

以上是关于将应用程序图标添加到 freepascal/SDL 程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何将图标添加到 React Native 应用程序

如何将图标添加到控制台应用程序

以编程方式将图标添加到主屏幕

如何将自定义图标添加到 Oro 前台菜单项?

如何使用 Xcode 4.3.1 将应用程序图标添加到项目中

无法将 1024px 应用商店图标添加到 watchOS 应用资产