我使用ImageTools庫(imagetools.codeplex.com)從外部URL加載圖像。Silverlight:ImageTools.ExtendedImage加載外部URL圖像不工作
<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
工作,但加載外部URL圖像(https://www.google.com/images/srpr/logo3w.png
)是不工作。
它表現得很瘋狂:一旦我點擊測試按鈕,LayoutRoot畫布消失。
但是,根據此討論:http://imagetools.codeplex.com/discussions/250624 加載外部URL圖像應該工作。
是它的工作在你的身邊?它不適用於我的程序。 –
添加ei.LoadingFailed它說明了爲什麼它失敗 –
我得到了System.Security.SecurityException它意味着你需要CrossDomain.xaml http://stackoverflow.com/q/4174317/413032。 CrossDomain是一個文件,它說我的軟件可以訪問這些通道。這些端口......,這些遠程文件... –