【问题标题】:Silverlight - Showing a png in image control from a file on local harddriveSilverlight - 在本地硬盘驱动器上的文件中的图像控件中显示 png
【发布时间】:2012-03-23 00:08:55
【问题描述】:

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

该文件位于我的本地硬盘上。

是否可以将图像从硬盘加载到 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;

问候

尼尔

【问题讨论】:

    标签: silverlight image controls


    【解决方案1】:

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

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

    【讨论】:

    • 我要做的是从 sql 中读取图像并将其显示为徽标。我可以从数据库中检索图像没问题,那么显示它的最简单方法是什么?我可以直接从 MemoryStream 做吗?或者如果没有,我可以以编程方式将其添加为资源吗?
    • 查看更新以获得答案 - 感谢大家为我指明正确的方向
    【解决方案2】:

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

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

    【讨论】:

    • 没问题。对于未来,您还可以回答自己的问题,而不是编辑问题。
    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2017-05-15
    相关资源
    最近更新 更多