3

这是问题所在。我想从本地驱动器打开一个文件,然后把它变成一个 WritableBitmap 以便我可以编辑它。但问题是,我无法从 Uri 或类似的东西创建 WritableBitmap。我也知道如何将文件打开到 BitmapImage 中,但我不知道如何将文件打开为 WritableBitmap。有没有办法将文件直接打开到 WritableBitmap,如果没有,有没有办法将 BitmapImage 转换为 WritableBitmap?多谢你们。

4

3 回答 3

4

您可以将图像文件加载到BitmapImage中,并将其用作WriteableBitmap的源:

BitmapImage bitmap = new BitmapImage(new Uri("YourImage.jpg", UriKind.Relative));
WriteableBitmap writeableBitmap = new WriteableBitmap(bitmap);
于 2010-11-23T09:00:57.530 回答
1

我不是专家,也无法立即访问智能感知和诸如此类的东西,但是这里......

var fileBytes = File.ReadAllBytes(fileName);
var stream = new MemoryStream(fileBytes);
var bitmap = new BitmapImage(stream);
var writeableBitmap = new WritableBitmap(bitmap);

即使不是一个完美的例子,这也足以为您指明正确的方向。希望如此。

于 2010-11-23T09:00:16.673 回答
0

在 Silverlight 5 中,您可以使用以下方法从本地磁盘打开文件并将其转换为 BitmapImage 并使其进入 WriteableBitmap;

        OpenFileDialog dlg = new OpenFileDialog();
        dlg.Multiselect = false;


        dlg.ShowDialog();
        byte[] byteArray = new byte[] { };
        if (dlg.File == null) return;
        BitmapImage bi = new BitmapImage();
        bi.CreateOptions = BitmapCreateOptions.None;
       // bi.UriSource = new Uri(@"C:\Users\saw\Desktop\image.jpg", UriKind.RelativeOrAbsolute);
        bi.SetSource(dlg.File.OpenRead());
        WriteableBitmap eb=new WriteableBitmap(bi);

尝试创建 WriteableBitmap 时设置新的 Uri 给了我错误(对象引用未设置为对象的实例)

于 2015-07-16T04:41:23.953 回答