Tipton Tyler Ответов: 1

Как я могу получить изображение для рендеринга на холсте WPF



Я работаю с C#/WPF, пытаясь вставить изображение на холст. Образ находится в корневом каталоге. Он отображается на холсте, когда я использую полный путь, но не тогда, когда я использую; источник= MyImage.в формате PNG . Я что-то упустил?

<Canvas  Background="Wheat" UseLayoutRounding="False" AllowDrop="True" >
   <Image Canvas.Left="102" Canvas.Top="122" Width="400" OpacityMask="#FFC2E5DB"
          Source="C:/Users/Tip/C# Files/BookKeeper/MYImage.png"/>
</Canvas>

"MyImage" appears on the Canvas.

 <Canvas  Background="Wheat" UseLayoutRounding="False" AllowDrop="True" >
    <Image Canvas.Left="102" Canvas.Top="122" Width="400" OpacityMask="#FFC2E5DB"

           Source="MYImage.png"/>
 </Canvas>

The program runs normally but "MyImage" does not appear on the Canvas.

Any help would be greatly appreciated.

1 Ответов

Рейтинг:
10

Sergey Alexandrovich Kryukov

Конечно, использование полного пути не является решением; файл не будет найден в другой системе, и решение не будет переносимым даже на вашей.

Во - первых, вам вовсе не обязательно иметь файл в исполняемом каталоге. Если это постоянный файл, часть вашего продукта, вам лучше встроить его в ресурс, а затем ссылаться на него в XAML с помощью схема URI "упаковка://". См., например::
http://www.wpfsharp.com/2012/01/23/using-relative-path-images-included-as-content-with-wpf[^].

Более того, с WPF я не уверен, что вам вообще нужно использовать пиксельную графику (кроме окон и меню приложений). Если изображение не очень маленькое, то векторная графика намного проще и лучше, будет автоматически масштабироваться, без потери качества, занимать меньше памяти и так далее. Вы можете создать векторное изображение и сохранить его в XAML (я настоятельно рекомендую open-source InkScape, приложение потрясающего качества и производительности) и встроить его в свой XAML, окно, словарь ресурсов, что угодно. Вы можете найти такой пример с объяснением, скажем, в моей недавней статье: Практичный диктофон со звуковой активацией[^].

Если вы все еще думаете, что вам нужно остаться с пиксельным изображением, пожалуйста, смотрите первую строку выше, а также:
http://stackoverflow.com/questions/1444699/wpf-relative-image-source-path[^],
http://social.msdn.microsoft.com/Forums/vstudio/en-US/53cda8b8-08c1-4477-937a-e934157b0b1e/how-to-use-relative-path-for-image-in-wpf-when-image-is-not-in-project-directory?forum=wpf[^].

—СА