Рендер XAML с удаленными изображениями - PullRequest
2 голосов
/ 14 августа 2010

Я работаю над инструментом, который визуализирует фрагменты XAML в изображения. XAML используется в качестве шаблона для разработки изображений. Из-за того, как работает рендеринг, невозможно использовать код позади. Рендеринг просто XAML не проблема.

В одном из моих шаблонов я хочу дать рендереру широту / долготу и добавить изображение из карт Google среди других изображений, хранящихся в Интернете. 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 для добавления URL в шаблон.

Кто-нибудь знает, как я могу отобразить XAML с удаленными изображениями?

1 Ответ

0 голосов
/ 14 августа 2010

Я нашел обходной путь.Поскольку при рендеринге работают локальные изображения, я решил использовать временные изображения.Перед рендерингом фрагмента 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...