我正在使用ImageTools库(imagetools.codeplex.com)从外部网址加载图片。
<Canvas x:Name="LayoutRoot" Background="Blue"
Width="466" Height="204" >
<Image Name="theImage" />
<Button x:Name="btnTest" Canvas.Top="0" Canvas.Left="-200" Click="btnTest_Click"
Width="100" Height="23"
Content="Test Button">
</Button>
</Canvas>
初始化:
public MainPage()
{
InitializeComponent();
Encoders.AddEncoder<PngEncoder>();
Decoders.AddDecoder<PngDecoder>();
Encoders.AddEncoder<JpegEncoder>();
Decoders.AddDecoder<JpegDecoder>();
}
然后:
private void btnTest_Click(object sender, RoutedEventArgs e)
{
ExtendedImage ei = new ExtendedImage();
// ei.UriSource = new Uri(@"https://www.google.com/images/srpr/logo3w.png"); // NOT working
ei.UriSource = new Uri(@"/Images/header.png", UriKind.Relative); // Working
ei.LoadingCompleted += new EventHandler((ss, ee) =>
{
Dispatcher.BeginInvoke(() =>
{
theImage.Source = ei.ToBitmap();
});
});
}
我发现加载本地文件/Image/header.png
正在运行,但加载外部网址图片(https://www.google.com/images/srpr/logo3w.png
)根本无效。
它表现得很疯狂:一旦我点击了测试按钮,LayoutRoot画布就会消失。
但是,根据这个讨论:http://imagetools.codeplex.com/discussions/250624 加载外部URL图像应该正常工作。
答案 0 :(得分:0)
它可以与UriType相关吗?
相对,绝对RelativeOrAbsolute
ei.UriSource =
new Uri(@"https://www.google.com/images/srpr/logo3w.png"
,UriKind.RelativeOrAbsolute); // works ?
http://msdn.microsoft.com/en-us/library/system.urikind(v=vs.95).aspx
希望有所帮助!编辑:您需要一个类似http://twitter.com/crossdomain.xml的文件,否则SL会正常抛出SecurityException。
对于跨域实现,请参阅