如何更改 Piston2D / PistonWindow / GlutinWindow 中的光标图标?

问题描述

如正常、忙碌或文本选择。我想创建一个桌面 Windows 应用程序,我需要更改它的图标。

解决方法

活塞本身不直接提供更改光标图标的功能。但是,在某些情况下,活塞会暴露底层窗口,这确实提供了该功能。

例如,您提到了 GlutinWindow,我认为它是 pistoncore-glutin_window crate 中的 glutin_window::GlutinWindow。它通过访问 glutin::window::Window 字段间接提供对底层 ctx 的访问。

底层 glutin::window::Window 确实有一个 set_cursor_icon(),您可以在其中指定一个 CursorIcon

use glutin_window::GlutinWindow;
use glutin::window::CursorIcon;

let wnd: GlutinWindow = ...;

wnd.ctx.window().set_cursor_icon(CursorIcon::Default);
wnd.ctx.window().set_cursor_icon(CursorIcon::Wait);
wnd.ctx.window().set_cursor_icon(CursorIcon::Text);