使用远程图像渲染XAML

时间:2010-08-13 22:14:55

标签: wpf 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?

1 个答案:

答案 0 :(得分: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;
    }
}