2012-11-18 46 views
0

我使用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圖像應該工作。

回答

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。

對於跨域執行看到

https://stackoverflow.com/a/1325011/413032

http://www.silverlighthack.com/post/2008/11/08/Silverlight-clientaccesspolicyxml-files-for-the-Enterprise-(Part-1-of-2).aspx

+0

是它的工作在你的身邊?它不適用於我的程序。 –

+0

添加ei.LoadingFailed它說明了爲什麼它失敗 –

+0

我得到了System.Security.SecurityException它意味着你需要CrossDomain.xaml http://stackoverflow.com/q/4174317/413032。 CrossDomain是一個文件,它說我的軟件可以訪問這些通道。這些端口......,這些遠程文件... –