You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI 3中加载自定义.cur光标文件的替代方案咨询

在WinUI 3中无需Win32Resource加载自定义.cur光标

完全可以不用依赖Win32 .res文件来加载自定义32×32光标,以下是具体实现步骤:

步骤1:将.cur文件设为嵌入资源

  • 在Visual Studio中右键你的.cur文件,选择「属性」
  • 将「生成操作」设置为「嵌入的资源」
  • (或者直接在.csproj中添加配置)
<EmbeddedResource Include="CustomCursor.cur" />

步骤2:从嵌入资源读取并创建光标

利用InputCursor.CreateFromStreamAsync方法,直接从嵌入资源的流中创建光标,示例代码如下:

using System.Reflection;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Input;

private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    // 获取当前程序集
    var assembly = Assembly.GetExecutingAssembly();
    // 注意资源名称格式:项目命名空间 + 文件名(如果文件在子文件夹,还要加上文件夹路径)
    var resourceFullName = "YourWinUIAppNamespace.CustomCursor.cur";
    
    // 获取资源流
    using var cursorStream = assembly.GetManifestResourceStream(resourceFullName);
    if (cursorStream == null)
    {
        // 资源不存在的异常处理
        return;
    }

    // 从流创建光标
    var customCursor = await InputCursor.CreateFromStreamAsync(cursorStream);
    // 给当前页面设置光标
    this.Cursor = customCursor;
}

关键注意事项

  • 资源名称正确性:嵌入资源的全名是「项目默认命名空间」+「文件路径(含文件名)」,如果不确定可以用assembly.GetManifestResourceNames()打印所有嵌入资源名称来核对。
  • 自包含部署兼容:这种方式不需要配置Win32Resource,完全支持WindowsAppSDKSelfContained模式,不会出现之前的冲突错误。
  • 光标尺寸:确保你的.cur文件是32×32尺寸,WinUI 3对光标尺寸有要求,不符合的话可能无法正常显示。

内容的提问来源于stack exchange,提问作者testalino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:03:18