2010-08-13 66 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; 
    } 
}