我使用以下代码来传输图像源:
BitmapImage Art3 = new BitmapImage();
using (FileStream stream = File.OpenRead("c:\\temp\\Album.jpg"))
{
Art3.BeginInit();
Art3.StreamSource = stream;
Art3.EndInit();
}
artwork.Source = Art3;
“artwork”是应该显示图像的XAML对象。该代码不应该锁定图像,它不会将其锁定好,但也不显示它,默认图像变为“无”......我的猜测是我没有正确使用流,并且我的图像变为空。帮助
更新:
我现在正在使用朋友向我建议的以下代码:
BitmapImage Art3 = new BitmapImage();
FileStream f = File.OpenRead("c:\\temp\\Album.jpg");
MemoryStream ms = new MemoryStream();
f.CopyTo(ms);
f.Close();
Art3.BeginInit();
Art3.StreamSource = ms;
Art3.EndInit();
artwork.Source = Art3;
由于某些奇怪的原因,此代码返回以下错误:
无法解码图像。图像标题可能已损坏。
我做错了什么?我确信我试图加载的图像没有损坏。
答案 0 :(得分:10)
我设法通过使用以下代码来解决问题:
BitmapImage Art3 = new BitmapImage();
FileStream f = File.OpenRead("c:\\temp\\Album.jpg");
MemoryStream ms = new MemoryStream();
f.CopyTo(ms);
ms.Seek(0, SeekOrigin.Begin);
f.Close();
Art3.BeginInit();
Art3.StreamSource = ms;
Art3.EndInit();
artwork.Source = Art3;
感谢所有试图帮助我的人!
答案 1 :(得分:1)
处理源流将导致BitmapImage不再显示流中的任何内容。当你不再使用BitmapImage时,你必须跟踪流并处理它。
答案 2 :(得分:1)
这可能更简单
BitmapImage Art3 = new BitmapImage(new Uri("file:///c:/temp/Album.jpg"));
答案 3 :(得分:0)
你试过了吗?
BitmapImage Art3 = new BitmapImage();
using (FileStream stream = File.OpenRead("c:\\temp\\Album.jpg"))
{
Art3.BeginInit();
Art3.StreamSource = stream;
stream.Flush();
Art3.EndInit();
}
artwork.Source = Art3;