Не удается найти изображение, указав относительный путь в Silverlight - PullRequest
2 голосов
/ 28 июля 2010

Я работаю над приложением Silverlight, и мне трудно установить относительный путь к изображению в моем приложении.

Это краткое изображение каталога моего проекта:

MyProject L images L mountain1.jpg L SpriteObjects L MountainFactory.cs L GameScreen.xaml

Первоначально я рисовал прямоугольник с помощью кисти изображений из GameScreen.xaml.

<Rectangle Name="rec_bg" HorizontalAlignment="Left" VerticalAlignment="Top" Width="800" Height="600">
    <Rectangle.Fill>
        <ImageBrush x:Name="ib_bg" ImageSource="./images/mountain1.jpg" ></ImageBrush>
    </Rectangle.Fill>
</Rectangle>

Это xamlкод работает, то есть он может без проблем найти изображение в папке images.

Я хочу динамически изменить изображение, и я создал класс с именем MountainFactory.cs.В этом классе у меня есть метод с таким кодом:

ImageBrush brush = new ImageBrush();
BitmapImage image = new BitmapImage(new Uri("./images/mountain" + level + ".jpg", UriKind.Relative));
brush.ImageSource = image;

Этот метод вернет кисть изображения, которая применяется к объекту rec_bg Rectangle.Однако этот код не может найти указанное изображение.

Кто-нибудь знает, как это исправить?Спасибо.

1 Ответ

3 голосов
/ 29 июля 2010

Это зависит от того, как вы внедрили изображение. Я предполагаю, что вы установили его как «Контент», поэтому он не встроен в DLL, а встроен в XAP. В этом случае вы просто обращаетесь к нему относительно корня проекта, поэтому вы будете использовать:

"images / mountain ..."

(Обратите внимание, вы не используете ./ перед ним, вы автоматически относитесь к корню приложения). Если он настроен как встроенный ресурс, вам нужно извлечь его из DLL с помощью потока - я не рекомендую этого.

Короткая история скучно: попробуйте удалить ведущий ./ и убедитесь, что свойства изображения имеют его как контент.

...