Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 533 534 535 536 537 538 539 540 541 ... 642

Система ресурсов WPF

Первой задачей будет исследование темы встраивания и доступа к ресурсам приложения. Инфраструктура WPF поддерживает два вида ресурсов. Первый из них — двоичные ресурсы; эта категория обычно включает элементы, которые большинство программистов считают ресурсами в традиционном смысле (встроенные файлы изображений или звуковых клипов, значки, используемые приложением, и т.д.).

Вторая категория, называемая объектными ресурсами или логическими ресурсами, представляет именованные объекты .NET, которые можно упаковывать и многократно применять повсюду в приложении. Несмотря на то что упаковывать в виде объектного ресурса разрешено любой объект .NET, логические ресурсы особенно удобны при работе с графическими данными произвольного рода, поскольку можно определить часто используемые графические примитивы (кисти, перья, анимации и т.д.) и ссылаться на них по мере необходимости.

Работа с двоичными ресурсами

Прежде чем перейти к теме объектных ресурсов, давайте кратко проанализируем, как упаковывать двоичные ресурсы вроде значков и файлов изображений (например, логотипов компании либо изображений для анимации) внутри приложений. Создайте в Visual Studio новый проект приложения WPF по имени BinaryResourcesApp. Модифицируйте разметку начального окна для обработки события Loaded элемента Window и применения DockPanel в качестве корня компоновки:

<Window x:Class="BinaryResourcesApp.MainWindow"

  <! -- Для краткости разметка не показана -->

    Title="Fun with Binary Resources" Height="500" Width="649"

    Loaded="MainWindow_OnLoaded">

  <DockPanel LastChildFill="True">

  </DockPanel>

</Window>

Предположим, что приложение должно отображать внутри части окна один из трех файлов изображений, основываясь на пользовательском вводе. Элемент управления Image из WPF может использоваться для отображения не только типичного файла изображения (*.bmp, *.gif, *.ico, *.jpg, *.png, *.wdp или *.tiff), но также данных объекта DrawingImage (как было показано в главе 26). Можете построить пользовательский интерфейс окна, который поддерживает диспетчер компоновки DockPanel, содержащий простую панель инструментов с кнопками Next (Вперед) и Previous (Назад). Ниже панели инструментов расположите элемент управления Image, свойство Source которого в текущий момент не установлено:

<DockPanel LastChildFill="True">

   <ToolBar Height="60" Name="picturePickerToolbar" DockPanel.Dock="Top">

     <Button x:Name="btnPreviousImage" Height="40" Width="100" BorderBrush="Black"

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

             Margin="5" Content="Previous" Click="btnPreviousImage_Click"/>

     <Button x:Name="btnNextImage" Height="40" Width="100" BorderBrush="Black"

             Margin="5" Content="Next" Click="btnNextImage_Click"/>

   </ToolBar>

<b>   &lt;!-- Этот элемент Image будет заполняться в коде --&gt; </b>

   &lt;Border BorderThickness=&quot;2&quot; BorderBrush=&quot;Green&quot;&gt;

     &lt;Image x:Name=&quot;imageHolder&quot; Stretch=&quot;Fill&quot; /&gt;

   &lt;/Border&gt;

&lt;/DockPanel&gt;

Добавьте следующие пустые обработчики событий:

private void MainWindow_OnLoaded(

  object sender, RoutedEventArgs e)

{

}

private void btnPreviousImage_Click(

  object sender, RoutedEventArgs e)

{

}

private void btnNextImage_Click(

  object sender, RoutedEventArgs e)

{

}

Во время загрузки окна изображения добавляются в коллекцию, по которой будет совершаться проход с помощью кнопок Next и Previous. Располагая инфраструктурой приложения, можно заняться исследованием разных вариантов ее реализации.

Включение в проект несвязанных файлов ресурсов

Один из вариантов предусматривает поставку файлов изображений в виде набора несвязанных файлов в каком-то подкаталоге внутри пути установки приложения. Начните с создания в проекте новой папки (по имени Images). Добавьте в папку несколько изображений, щелкнув правой кнопкой мыши внутри данной папки и выбрав в контекстном меню пункт AddExisting Item (Добавить►Существующий элемент). В открывшемся диалоговом окне Add Existing Item (Добавление существующего элемента) измените фильтр файлов на *.*, чтобы стали видны файлы изображений. Вы можете добавлять собственные файлы изображений или задействовать три файла изображений с именами Deer.jpg, Dogs.jpg и Welcome.jpg из загружаемого кода примеров.

Конфигурирование несвязанных ресурсов

Чтобы скопировать содержимое папки Images в папку binDebug при компиляции проекта, выберите все изображения в окне Solution Explorer, щелкните правой кнопкой мыши и выберите в контекстном меню пункт Properties (Свойства); откроется окно Properties (Свойства). Установите свойство Build Action (Действие сборки) в Content (Содержимое), а свойство Copy Output Directory (Копировать в выходной каталог) в Copy always (Копировать всегда), как показано на рис. 27.1.

1 ... 533 534 535 536 537 538 539 540 541 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий