MAUI中图片加载依赖Image控件,支持本地资源、嵌入式资源、网络地址和本地文件路径四种方式;需正确设置Source属性,并注意平台差异与异步行为。

MAUI 中图片加载主要靠 Image 控件,支持本地资源、嵌入式资源、网络地址和本地文件路径四种方式。关键在于正确设置 Source 属性,并注意平台差异和异步加载行为。
加载本地资源图片(推荐用于图标、静态图)
把图片放进 Resources/Images 文件夹(如 dotnet.png),生成操作设为 MauiImage。XAML 中直接用资源名引用:
代码中也可这样写:
image.Source = "dotnet.png";
- 不需要写扩展名,MAUI 会自动匹配最佳格式(.png/.jpg/.svg 等)
- 支持多分辨率:按命名规则放
dotnet.png、dotnet@2x.png,系统自动选 - Android/iOS/macOS 都能识别,无需额外配置
加载网络图片(带自动缓存和占位图)
直接传 URL 字符串即可,MAUI 内置了基础缓存和错误处理:
建议配合 Aspect 和 Background 提升体验:
-
Aspect="AspectFit":保持宽高比,完整显示 -
Aspect="AspectFill":填满区域,可能裁剪 - 加
Background="LightGray"避免加载前白屏 - 可绑定
IsLoading或用Loaded事件做加载状态提示
加载嵌入式资源或 Stream(适合动态生成/加密图)
若图片来自程序集资源(如打包在 .NET 类库中),需用 ImageSource.FromStream:
var stream = GetType().Assembly.GetManifestResourceStream("MyApp.Resources.icon.svg");
image.Source = ImageSource.FromStream(() => stream);
- 确保资源的“生成操作”设为
EmbeddedResource - 流必须可重复读取(某些压缩流只读一次,需缓存到 MemoryStream)
- SVG 需要启用
Microsoft.Maui.Controls.Compatibility并注册渲染器(.NET 8+ 已原生支持部分 SVG)
加载本地文件路径(沙盒限制要注意)
仅限应用沙盒内路径(如 FileSystem.AppDataDirectory 下保存的图):
string path = Path.Combine(FileSystem.AppDataDirectory, "downloaded.jpg"); image.Source = ImageSource.FromFile(path);
- iOS 和 Android 对外部路径访问严格,不能直接用
/sdcard/xxx或~/Documents - 用
FileSystem.OpenAppPackageFileAsync可读取安装包内的文件(如更新后替换的资源) - 加载失败时
Image默认不报错,建议监听OnError事件排查
基本上就这些。MAUI 的 Image 控件用法简洁,但要注意资源路径规则、平台适配和异步加载时机——不复杂但容易忽略。










