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

UWP开发中如何从图像资源获取IRandomAccessStreamReference?

UWP项目图像资源生成MapIcon所需IRandomAccessStreamReference的方案

前置准备

首先确认项目中目标图像文件的配置:
在Visual Studio的解决方案资源管理器中选中图像文件,右键打开「属性」面板,设置两项参数:

  • 生成操作:内容
  • 复制到输出目录:如果较新则复制

实现方法

方案1:通过资源Uri直接创建(最简方案)

直接使用RandomAccessStreamReference.CreateFromUri静态方法读取应用内资源,无需异步操作:

// 引入必要命名空间
using Windows.Storage.Streams;
using Windows.UI.Xaml.Controls.Maps;
using Windows.Devices.Geolocation;

// 构造资源Uri,ms-appx:/// 对应应用安装根目录
Uri iconResourceUri = new Uri("ms-appx:///Assets/你的图标文件名.png");
IRandomAccessStreamReference iconStreamRef = RandomAccessStreamReference.CreateFromUri(iconResourceUri);

// 赋值给MapIcon
MapIcon customMapIcon = new MapIcon()
{
    Location = new Geopoint(new BasicGeoposition() { Latitude = 目标纬度, Longitude = 目标经度 }),
    Image = iconStreamRef,
    // 锚点设置为图标底部中心,让标记点精准对准经纬度坐标
    NormalizedAnchorPoint = new Windows.Foundation.Point(0.5, 1)
};

方案2:通过存储文件创建(适合需要预处理图像的场景)

如果需要先对图像做裁剪、缩放等处理,可先读取存储文件再生成流引用:

using Windows.Storage;

// 异步获取资源文件
StorageFile iconFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/你的图标文件名.png"));
IRandomAccessStreamReference iconStreamRef = RandomAccessStreamReference.CreateFromFile(iconFile);

注意事项

  • 资源Uri必须使用ms-appx:///前缀(三个斜杠),如果图像存放在子目录,需要补全路径,例如存放在Assets/MapIcons目录下的图标,Uri为ms-appx:///Assets/MapIcons/xxx.png
  • 建议使用带透明通道的PNG格式图像,尺寸控制在6464或128128,过大会导致地图渲染卡顿
  • 必须设置NormalizedAnchorPoint属性,默认值为(0,0)即图标左上角对齐坐标点,不符合常规标记使用逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 03:36:04