如何使用硬盘驱动器中的文件使用ImageBrush填充矩形

时间:2011-08-08 16:47:20

标签: c# silverlight

我正在尝试使用已保存到硬盘驱动器的文件填充矩形。我知道我必须使用ImageBrush,如果图像是包含的资源,我想我知道如何做到这一点。在这种情况下,文件是在硬盘驱动器上创建和设置的,但是当我尝试使用下面的代码时,矩形会发生变化,但它会改变以显示表单的背面颜色,而不是像我预期的那样显示图像(几乎就像图像是无形)。

    using (dynamic CommonDialog = AutomationFactory.CreateObject("WIA.CommonDialog"))
    {
        dynamic imageFile = CommonDialog.ShowAcquireImage();
        if (imageFile != null)
        {
            string filePath = string.Format("d:\\{0}.jpg", Guid.NewGuid());
            imageFile.SaveFile(filePath);

            rectangle2.Fill = new ImageBrush()
            {
                ImageSource = new BitmapImage(new Uri(filePath, UriKind.Absolute))
            };
        }
    }

更新:我可以通过使用以下内容替换If Then中的代码块来实现此目的:

            {
                string filePath = string.Format("d:\\{0}.jpg", Guid.NewGuid());
                imageFile.SaveFile(filePath);

                BitmapImage bitmapBase = new BitmapImage();
                dynamic fileData = imageFile.FileData;
                byte[] imageData = fileData.BinaryData;
                MemoryStream ms = new MemoryStream(imageData);
                bitmapBase.SetSource(ms);
                WriteableBitmap writableBitmap = new WriteableBitmap(bitmapBase);

                rectangle2.Fill = new ImageBrush() { ImageSource = (writableBitmap) };

            }

2 个答案:

答案 0 :(得分:1)

您无法从本地驱动器访问图像或任何文件(独立存储或文件打开对话框中的流除外)。这些都是安全措施。

由于你没有提到Out Of Browser我认为这只是一个网络/客户端应用程序。

答案 1 :(得分:1)

使用Silverlight 4时,您可以创建一个可以访问(部分)本地磁盘的浏览器外应用程序。

See here how