MAUI 中图片加载主要靠 Image 控件,支持本地资源、嵌入式资源、网络地址和本地文件路径四种方式。关键在于正确设置
Source属性,并注意平台差异和异步加载行为。
加载本地资源图片(推荐用于图标、静态图)
把图片放进
Resources/Images文件夹(如
dotnet.png),生成操作设为
MauiImage。XAML 中直接用资源名引用:
<Image Source="dotnet.png" />
代码中也可这样写:
image.Source = "dotnet.png";不需要写扩展名,MAUI 会自动匹配最佳格式(.png/.jpg/.svg 等) 支持多分辨率:按命名规则放
dotnet.png、
dotnet@2x.png,系统自动选 Android/iOS/macOS 都能识别,无需额外配置
加载网络图片(带自动缓存和占位图)
直接传 URL 字符串即可,MAUI 内置了基础缓存和错误处理:
<Image Source="https://example.com/logo.png" />
建议配合
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 控件用法简洁,但要注意资源路径规则、平台适配和异步加载时机——不复杂但容易忽略。
