2010-08-13 86 views
2

我正在研究一種將XAML圖片渲染爲圖像的工具.XAML被用作設計圖像的模板。由於渲染工作的方式,不可能使用隱藏代碼。渲染只是XAML是沒有問題的。使用遠程圖像渲染XAML

在我的一個模板中,我想給渲染器一個緯度/長度,幷包含來自谷歌地圖的圖像,以及存儲在網絡上的其他圖像。 XAML被渲染,但圖像不包括在內。我認爲這需要延遲下載圖像。

模板看起來像什麼:

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Border CornerRadius="10" Background ="#FF123456" > 
    <Image Source="{0}" Width="250" Height="150"/> 
    </Border> 
</UserControl> 

我用string.Format的網址添加到模板。

有誰知道我怎麼能用遠程圖像渲染XAML?

回答

0

我想出了一個解決方法。由於本地圖像在渲染中起作用,我決定使用臨時圖像。在渲染XAML之前,我下載圖像,將其保存到磁盤並使用該路徑作爲圖像的來源。

這種方法看起來是這樣的:

public string GetGoogleMapsImage(string lat, string lng, string path) 
{ 
    string googleMapsImage = 
     string.Format(
      "http://maps.google.com/maps/api/staticmap?center={0},{1}&zoom=8&size=250x150&sensor=false" , lat, lng); 
    string returnpath; 
    using (var w = new WebClient()) 
    { 
     var gm = w.DownloadData(googleMapsImage); 
     returnpath = path + "\\~googletemp" + DateTime.Now.Ticks + ".png"; 
     File.WriteAllBytes(returnpath, gm); 
     return returnpath; 
    } 
}