Silverlight - 从本地硬盘驱动器上的文件中显示图像控件中的png

时间:2012-03-05 14:09:45

标签: silverlight image controls

我正在努力在银色图像控件中显示图片。

该文件位于我的硬盘驱动器本地。

是否可以将硬盘中的图像加载到silverlight图像控件中?

到目前为止我搜索过的所有内容似乎与从硬盘驱动器加载无关。

我是否需要先将其另存为资源?

我目前正在做这样的事情:

Image pic = new Image();

Uri uri = new Uri(@"C:\Briefcase\PDF.bmp", UriKind.Relative);

pic.Source = new System.Windows.Media.Imaging.BitmapImage(uri);

canvas.Children.Add(pic);
pic.SetValue(Canvas.LeftProperty, Convert.ToDouble(100));
pic.SetValue(Canvas.TopProperty, Convert.ToDouble(100));
pic.Height = 70;
pic.Width = 600;

我的Uri是否正确?因为我也尝试过:

Uri uri = new Uri("C:/Briefcase/PDF.bmp", UriKind.Relative);

它可能与Silverlight无法访问我的本地驱动器有关吗?如果是这样我将如何动态地将图像加载到控件中?

非常感谢。

尼尔

更新

通过直接从MemoryStream

将图像加载到图像控件中解决了我的问题
byte[] logo = e.Result;

logoStream = new System.IO.MemoryStream(logo);

System.Windows.Media.Imaging.BitmapImage b = new System.Windows.Media.Imaging.BitmapImage();
b.SetSource(logoStream);
ownerLogo.Source = b;

问候

尼尔

2 个答案:

答案 0 :(得分:1)

出于安全原因,Silverlight不允许您访问独立存储之外的用户本地计算机上的文件或通过文件打开/保存对话框(这些必须通过用户启动的操作)。

使用提升的信任Silverlight 4应用程序,您可以直接访问“我的文档”,“我的图片”,“我的视频”和“我的音乐”文件夹。要使应用程序完全信任SL4,它必须不在浏览器中。这是你想要的吗? (SL 5允许从浏览器访问完整的文件系统,并且还具有提升权限,但这需要更改注册表。)

答案 1 :(得分:1)

Silverlight限制您在默认模式下访问一小组位置。如果您将应用程序设置为运行OOB并提升信任度(事实上,我认为SL5甚至不需要OOB),您实际上可以访问计算机上其他位置的文件,但这可能是也可能不是一个好的解决方案为您的申请。

如果您只是尝试使用图标并计划将其与您的应用程序一起分发,那么您绝对应该将其作为资源添加到项目中。