Добавление изображения на карту Bing - PullRequest
0 голосов
/ 30 декабря 2011

Я попытался добавить изображение с помощью следующего, но оно все еще не работает. Тип изображения - это контент.

Image image = new Image();
image.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("myimage.png", UriKind.Relative));

//Define the image display properties
image.Opacity = 1.0;
image.Stretch = Stretch.Fill;
image.Width = 40;
image.Height = 40;

// Center the image around the location specified


//Add the image to the defined map layer
phoneDetailsLayer.AddChild(image, e.Position.Location);

mapViewAll.Children.Remove(phoneDetailsLayer);
mapViewAll.Children.Add(phoneDetailsLayer);

Ответы [ 5 ]

1 голос
/ 04 января 2012

Убедитесь, что ваше изображение имеет правильный тип ресурса и загружается оптимально (т.е. один раз, если используется несколько раз).Существует несколько подходов к загрузке изображений для WPF (аналогично WP7), которые описаны здесь: Ресурсы WPF-изображений

Этот пост здесь: Visual Studio: Как сохранить ресурс изображенияв качестве встроенного ресурса? обсуждает различные типы ресурсов изображений, которые вы должны / не должны использовать.

Я думаю, вам следует взглянуть на оба этих вопроса как на полезную для понимания, так как она может помочь вамчтобы избежать проблем в будущем, которые могут всплыть.

0 голосов
/ 11 января 2012

Просто чтобы уточнить ответ на этот вопрос. Проблема была не в типе ресурса, проблема была связана с тем, как работает Ури. Так же, как любой хорошо структурированный проект, Эрикли использовал разные папки в своем проекте следующим образом (относительно корня проекта): / pages - содержит фактические страницы и, следовательно, также страницу, содержащую вышеуказанный код / images - Содержит фактические изображения PNG, на которые нужно сослаться

В исходном коде ссылка на «myimage.png» указана как относительный uri. Приложение теперь будет смотреть «/pages/myimage.png» и, следовательно, не найдет изображение. Хитрость здесь в том, чтобы использовать правильный относительный URI. Это может быть построено следующим образом: 1. Сначала перейдите в корень проекта, используя две точки -> .. (одну для текущего каталога, одну дополнительную для повышения на один уровень) 2. Теперь ссылка / изображения -> ../images 3. Теперь добавьте фактическую ссылку на файл -> ../images/myimage.png

Если вы используете правильный URI, проблема решена.

0 голосов
/ 10 января 2012

Я не могу добавить комментарий к вашему вопросу, однако я спрошу здесь, когда вы говорите «контент», добавили ли вы изображение непосредственно в проект, содержащий ваш код, или в отдельный проект с контентом?

Предполагается, что вы добавили его напрямую:

Если вы установили «Build Action» на «Resource», то вам следует использовать метод GetResourceStream:

Image image = new Image();
StreamResourceInfo resource = Application.GetResourceStream(new Uri("/myimage.png", UriKind.Relative));
var bmp = new System.Windows.Media.Imaging.BitmapImage();
bmp.SetSource(resource.Stream);
image.Source = bmp;

Однако, если вы установили «Build Action» на «Content», вы должны использовать метод GetContentStream

Image image = new Image();
StreamResourceInfo resource = Application.GetContentStream(new Uri("/myimage.png", UriKind.Relative));
var bmp = new System.Windows.Media.Imaging.BitmapImage();
bmp.SetSource(resource.Stream);
image.Source = bmp;
0 голосов
/ 04 января 2012

Основной вопрос, кажется, как получить истинное URI.В этом случае мне помогает следующая таблица (у меня она только на немецком языке): Uriformats WP7

http://msdn.microsoft.com/de-de/library/aa970069.aspx

пример:

// Absolute URI (default)
Uri absoluteUri = new Uri("pack://application:,,,/File.xaml", UriKind.Absolute);
// Relative URI
Uri relativeUri = new Uri("/File.xaml", UriKind.Relative);

пример 2:

Uri uri = new Uri("pack://application:,,,/File.xaml");

или кодовая часть:

'Image compiling is set to "content"
MyImage1.Source = New BitmapImage(New Uri("/Images/MyFile.png", Relative))'only example
Hope that helps
0 голосов
/ 03 января 2012
/projectname;component/images/menu/lost.png

Это правильный путь, остальная часть вашего ответа действительно не работает

...