我正在尝试将图像加载到Silverlight图像控件的本地路径中。这是一个浏览器外的应用程序。当我使用流加载图像时,它总是颠倒翻转。
知道为什么吗?这仅适用于大图像。
FileName
这里提供了本地文件系统的完整路径,例如C:\imageFullPath\image.jpg
。
请帮忙。以下是代码。
------在模型方面------------------------
public BitmapImage DisplayImage
{
get
{
if (!string.IsNullOrWhiteSpace(FileName))
{
var b = new BitmapImage();
b.SetSource(System.IO.File.OpenRead(FileName));
return b;
}
return null;
}
}
------在Silverlight View中------------------------
<Image Source="{Binding DisplayImage, Mode=TwoWay}" Width="450" Height="250" Margin="0,0,0,0"/>
调试时看到的内容
答案 0 :(得分:0)
BMP
normally stored "upside-down"的像素从底部到顶部的顺序相反,但可以在文件标题中使用负高度来表示图像是从上到下存储的,所以也许你有这样的形象。
这种情况会发生在所有图像上,还是只发生在那个图像上?
您可以尝试使用构造函数中的Uri
更改图片的加载方式,而不是使用SetSource()
调用Stream
,因为它可能会占用标题并阅读文件不同:
var b = new BitmapImage(new Uri(FileName));
return b;
或者,如果这没有帮助,您可以apply a transform翻转每张图片,但这并不能解决根本问题:
<Image Source="{Binding DisplayImage, Mode=TwoWay}" Width="450" Height="250" Margin="0,0,0,0">
<Image.RenderTransform>
<ScaleTransform ScaleY="-1" />
</Image.RenderTransform>
</Image>