Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 Почему Image не отображается в Silverlight  [new]
SWz
Member

Откуда:
Сообщений: 20
Пишу такой код:

BitmapImage bi = new BitmapImage();
bi.UriSource = new Uri(@"d:\111\1.jpg");
Image im = new Image();
im.Source = bi;
Canvas1.Children.Add(im);

При запуске приложения картинка не появляется.
Более того, пытаюсь разместить картинку не программно, а на этапе разработки в XAML:

<Canvas x:Name="Canvas1" Height="184" Width="376" Canvas.Left="0" Canvas.Top="0">
    <Image Source="d:\111\1.jpg"></Image>
</Canvas>

На этапе проектирования в Visual Studio картинка появляется, но при запуске приложения ее снова нет.
Помогите, пожалуйста, с чем это может быть связано?
9 ноя 11, 23:07    [11572717]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
SeVa
Member [заблокирован]

Откуда: Москва
Сообщений: 4324
new Uri(@"d:\111\1.jpg",UriKind.Absolute)

PACK Uri
9 ноя 11, 23:25    [11572756]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
уТКа
Member

Откуда: Страна дураков и разбитых дорог
Сообщений: 1266
SeVa,

чепуху не городи, нету в Silverlight Uri Pack-ов.
10 ноя 11, 12:41    [11573992]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
SeVa
Member [заблокирован]

Откуда: Москва
Сообщений: 4324
1. А с чего ты взял, что у него SL?
2. В SL нет только явного указания pack/application, а все отстальное из той же бочки. Лишней эта ссылка никогда не будет
10 ноя 11, 15:00    [11575532]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
Изопропил
Member

Откуда:
Сообщений: 31536
SeVa
1. А с чего ты взял, что у него SL?


Топик озаглавлен - Почему Image не отображается в Silverlight
странно, неправда ли?
10 ноя 11, 16:22    [11576412]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
SWz
Member

Откуда:
Сообщений: 20
SeVa,

Silverlight.

Да, я пробовал и так:
bi.UriSource = new Uri(@"d:\111\1.jpg", UriKind.Absolute);

Изначально у меня было так:
bi.UriSource = new Uri(@"d:\111\1.jpg", UriKind.RelativeOrAbsolute);

Так в то-то и дело, что не работает не только при программном создании Image, но и при помещении в XAML. Еще раз, на этапе проектирования в редакторе картинка появляется, а вот при запуске - нет.

Но это я уже немного переделал. мне вообще-то нужно так:
bi.UriSource = new Uri(@"http://servername/imagename.jpg", UriKind.RelativeOrAbsolute);

та же самая петрушка - на этапе разработки картинка грузится, при запуске - нет.
Кроме того, я пробовал назначать принудительно размер Image и менял курсор. Вожу по форме - не меняется курсор, то есть как будто бы нет вообще объекта класса Image на Canvas-е.
10 ноя 11, 21:20    [11578186]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
enigmatic
Member

Откуда:
Сообщений: 729
автор
На этапе проектирования в Visual Studio картинка появляется, но при запуске приложения ее снова нет.

Дизайнер студии живет своей жизнью.

автор
мне вообще-то нужно так:
bi.UriSource = new Uri(@"http://servername/imagename.jpg", UriKind.RelativeOrAbsolute);

Или OOB+elevated trust (на картинке) или clientaccesspolicy.xml в корень "servername".

К сообщению приложен файл. Размер - 127Kb
10 ноя 11, 22:19    [11578336]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
уТКа
Member

Откуда: Страна дураков и разбитых дорог
Сообщений: 1266
SWz,

автор, а чего изображение в само приложение не запилишь?
10 ноя 11, 22:42    [11578405]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
SWz
Member

Откуда:
Сообщений: 20
clientaccesspolicy.xml в корень "servername" уже есть - оттуда я успешно тяну при вполнении одного запроса xml-файл. Без clientaccesspolicy на работало. Это я к тому, что разрешения работают.

Картинку не встраиваю в приложение по той причине, что мне надо их динамически создавать с заранее неизвестными именами картинок.

Заметил еще вот что:

Создаю новый проект. Пишу так:

<UserControl x:Class="SilverlightApplication4.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    
        <Canvas>
        <Image Source="http://armenianroots.ru/userphotos/tree/small/nophoto.jpg"></Image>
        </Canvas>
    
</UserControl>

Работает! Отображается и в студии, и при запуске.

В моем приложении код такой:
<UserControl 
    x:Class="GraphLight.Demo.MainPage" 
        
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="500">

    <Canvas x:Name="LayoutRoot" MinHeight="300" MinWidth="500" DataContext="{Binding}" >
        <Canvas x:Name="FamilyTree" Background="Transparent" MouseLeftButtonDown="FamilyTree_MouseLeftButtonDown" MouseLeftButtonUp="FamilyTree_MouseLeftButtonUp" MouseMove="FamilyTree_MouseMove" Height="184" Width="376">
             <Image Source="http://armenianroots.ru/userphotos/tree/small/nophoto.jpg"></Image>
        </Canvas>
            
    </Canvas>
</UserControl>

Сразу скажу, Background="Transparent" тут не причем. Без него тоже не работает.
10 ноя 11, 23:00    [11578456]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
уТКа
Member

Откуда: Страна дураков и разбитых дорог
Сообщений: 1266
SWz,

подозреваемый №1
автор
DataContext="{Binding}"

это зачем?

подозреваемый №2
не указаны координаты у вложенного Canvas на родительский Canvas (координаты x,y)
11 ноя 11, 00:38    [11578689]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
уТКа
Member

Откуда: Страна дураков и разбитых дорог
Сообщений: 1266
SWz,

подозреваемый №3
автор
MinHeight="300" MinWidth="500"

Canvas != Grid поэтому лучше сразу задать нормальные размеры.

при работе с Canvas в своих проектах я подписывался на изменение SizeChanged (вызывается после загрузки всех контролов и элементов) самого контрола, там и выставлял Canvas реальные размеры.
11 ноя 11, 00:49    [11578722]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
SWz
Member

Откуда:
Сообщений: 20
Так... Ничего не пойму.
Попросил вчера разместить xap прямо там на сервере. Картинка появилась. Значит, было что-то с разрешениями. В корне лежит файл
clientaccesspolicy.xml

с содержимым:

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*" />
</allow-from> <grant-to>
<resource path="/" include-subpaths="true" />
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
11 ноя 11, 08:15    [11579074]     Ответить | Цитировать Сообщить модератору
 Re: Почему Image не отображается в Silverlight  [new]
SeVa
Member [заблокирован]

Откуда: Москва
Сообщений: 4324
SWz
. Значит, было что-то с разрешениями. В корне лежит файл
clientaccesspolicy.xml


SL работает в песочнице и не имеет доступа к жесткому диску без дополнительных разрешений, поэтому я и счел, что твой вариант для wpf.
Каринки должны быть или в ресурсах, или в директориях, с которой грузится приложение.
ЗЫ жесткое указание имени сервера Uri(@"http://servername/imagename.jpg" - не есть зэр гуд.
Лучше применять относительные пути Uri("Imagename.jpg", UriKind.RelativeOrAbsolute)
11 ноя 11, 08:36    [11579111]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить