1 / 15

Классы Windows Presentation Foundation

Классы Windows Presentation Foundation. Ресурсы WPF. Два типа ресурсов WPF:

krikor
Download Presentation

Классы Windows Presentation Foundation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Классы Windows Presentation Foundation

  2. Ресурсы WPF • Два типа ресурсов WPF: • объектные ресурсы (object resource) – определенный .NET-объект, который можно использовать многократно; объектные ресурсы размещаются в словарях ресурсов ResourceDictionary, которые определены во всех элементах, производных от FrameworkElementилиFrameworkContentElement. • ресурсы сборки ( assembly resource) – двоичные данные, встроенные в скомпилированную сборку.

  3. Двоичные ресурсы WPF • Двоичные файлы данных приложения WPF • файлы ресурсов (Resource Files) - файлы данных, скомпилированные либо в исполняемую, либо в библиотечную сборку WPF; • файлы содержимого (Content Files) - автономные файлы данных, которые не компилируются в сборку, но метаданные скомпилированной сборки содержат информацию о них; • файлы исходного узла (Site of Origin Files) - автономные файлы данных, не имеющие связи с исполняемой сборкой WPF. • Файлы ресурсов и содержимого добавляются в приложение с помощью MSBuild. • WPF предоставляет для загрузки ресурсов несколько API.

  4. Файлы ресурсов WPF • Данные, скомпилированные в исполняемую или библиотечную сборку WPF, всегда доступны приложению, но в случае их изменения требуется перекомпиляция приложения. • В Visual Studio, чтобы скомпилировать двоичные данные в сборку как ресурс, файл с данными надо добавить в проект и для свойства BuildAction этого файла задать значение Resource. • Для доступа к файлам ресурсов, встроенных в сборку, в XAML используется относительный или абсолютный URI, в коде можно использовать статический метод GetResourceStreamкласса Application, возвращающийnull, если ресурс не найден. public static StreamResourceInfoGetResourceStream( Uri uriResource ); • Свойства класса StreamResourceInfoдают доступ к данным public string ContentType { get; } public Stream Stream { get; } • В примере файл Tree.jpg с изображением был скомпилирован в сборку. Изображение выводится в элемент управления Image. private void Resource_Click(object sender, RoutedEventArgs e) { Uri image1_Uri = new Uri("/Tree.jpg", UriKind.Relative); image1.Source = new BitmapImage(image1_Uri); }

  5. Файлы содержимого WPF • Файл содержимого не компилируются в сборку, но в метаданных сборки есть информация о нем. При изменении файла содержимого перекомпиляция приложения не нужна. • Чтобы скомпилировать двоичные данные как файл содержимого в VisualStudio, файл надо добавить в проект и для свойства BuildAction этого файла задать значение Content. • Для доступа к файлам содержимого в XAML используется URI, в коде доступ к данным можно получить с помощью статического метода GetContentStreamклассаApplication. public static StreamResourceInfoGetContentStream( Uri uriContent );

  6. Файлы исходного узла WPF • Файлы исходного узла - автономные файлы данных, которые не имеют связи с исполняемой сборкой WPF. Используются в следующих случаях: • файл не существует во время компиляции; • возможно обновление файла данных без перекомпиляции сборки; • файл данных имеет большой размер, и следует загружать его только по запросу. • В VisualStudio можно скомпилировать двоичные данные как файл исходного узла, если добавить его к проекту и задать значение None для его свойства BuildAction.Единственный результат – файл будет скопирован в каталог проекта. • Для доступа к файлам в XAML можно использовать URI, для доступа в коде – статический метод GetRemoteStreamклассаApplication. public static StreamResourceInfoGetRemoteStream( Uri uriRemote ); • В примереизображение из файла garden.jpg выводится в элемент управления Image. private void Site_of_Origin_Click(object sender, RoutedEventArgs e) { try{ image3.Source = new BitmapImage( newUri("C:\\Users\\Public\\Pictures\\Sample Pictures\\garden.jpg“, UriKind.RelativeOrAbsolute)); } catch(Exception ex) {MessageBox.Show(ex.Message); } }

  7. URI (Универсальный идентификатор ресурса) • URI (universal resource identifier) – строка символов, кодирующая адрес информационного ресурса. Спецификации URI определены в интернет-стандартах RFC 2396 и RFC 3986. • Все элементы URI должны состоять только из символов базовой латиницы(символы из кодировок Unicode/ISO 10646). Чтобы включить в них другие символы, их необходимо преобразовать в формат UTF-8 и представить в виде %xx, где xx — шестнадцатеричный код байта. • Международный код ресурса IRI (international resource identifier) позволяет применять символы Юникода.Спецификации IRI определены в стандарте RFC 3987. • Класс Uri в .NET Framework версии 3.5, 3.0 с пакетом обновления 1 (SP1) и 2.0 с пакетом обновления 1 (SP1) поддерживает IRI в соответствии со стандартом RFC 3987. • Полный URI имеет вид • Протокол:// авторизация// путь к ресурсу на сервере ? запрос • Обязательным элементом полного URI является протокол, остальные элементы зависят от протокола. • Относительные URI могут использоваться, когда тем или иным способом определен базовый URI. Относительные URI ресурсов указываются относительно базового URI.

  8. Класс Uri • Класс Uriобеспечивает объектное представление универсального кода ресурсов (URI), а также простой доступ к его частям. • После создания объекта Uri его свойства доступны только для чтения. Создание объекта, который допускает изменение, поддерживает класс UriBuilder. • Конструкторы класса (5) создают экземпляры Uri на основе строки кода URI и/или на основе базовых и относительных Uri. public Uri( string uriString ); public Uri( Uri baseUri, string relativeUri ); • Конструкторы анализируют URI, выполняют преобразования в канонический формат и применяют необходимые escape-кодировки. Конструкторы бросают исключение UriFormatException, если входные данные заданы неправильно. • Конструкторы не проверяют, что объект Uri ссылается на доступный ресурс.

  9. Интерфейс IUriContext • Интерфейс IUriContext обеспечивает установку базового URI. public interface IUriContext { Uri BaseUri { get; set; } } • Один из конструкторов класса Uri public Uri( string uriString, UriKind uriKind ); позволяет указать, является ли строка URI относительным или абсолютным URI. Перечисление UriKind имеет значения Absolute, Relative и RelativeOrAbsolute.

  10. Фигуры(shapes)и рисунки(drawings) • Фигуры (shapes) – это элементы управления. • Рисунки(drawing) – API для взаимодействия с низкоуровневым механизмом композиции. • Классы, производные от System.Windows.Shapes.Shape, • поддерживают события, как и другие элементы управления; • участвуют в системе макета, их можно разместить в любой контейнер компоновки; • автоматически перерисовываются при изменении размера, перемещении или изменении свойств. • Image – элемент управления для просмотра ImageSource.

  11. Элемент управления Image • Класс Image представляет элемент управлениядля отображения изображений. Элемент управления Image позволяет загружать изображения в форматах BMP, GIF, ICO, JPG, PNG, WDP и TIFF. public class Image : FrameworkElement, IUriContext { } • Источник изображения передается элементу управления через свойство Source: public ImageSource Source { get; set; } • Размерами изображения можно управлять с помощью свойств Width и/или Height, для управления растяжением изображения используются свойства Stretch и StretchDirection. • ПеречислениеStretch (тип свойства Stretch) имеет значения

  12. Класс ImageSource • Класс ImageSource – абстрактный базовый класс для.DrawingImageиBitmapSource. • Класс BitmapSource предоставляет средства для работы с растровыми изображениями в форматах BMP, GIF, JPEG, PNGи TIFF. • Класс DrawingImageподдерживает вывод объектов Drawing в элемент управления Image. • Класс BitmapSource имеет производный класс BitmapImage, специально определенный для поддержки XAML. • В класс BitmapImageдобавлены дополнительные свойства BaseUriиUriSourceдля загрузки растровых изображений. public Uri BaseUri { get; set; } public Uri UriSource { get; set; }

  13. Класс CroppedBitmap • Класс CroppedBitmapпозволяет вырезать прямоугольную область из растрового изображения. • Область определяется с помощью свойства SourceRect. public Int32Rect SourceRect { get; set; } • Структура Int32Rect содержит координаты X, Y левого верхнего угла , ширину и высоту прямоугольной области внутри изображения. • В примере из изображения, которое находится в словаре ресурсов главного окнакак элементс ключом “Image_Waterfall”, вырезается прямоугольная область размером 512 x 384 с координатами левого верхнего угла (10, 20). <Window.Resources> <BitmapImage x:Key="Image_Waterfall" UriSource="/WaterFall.jpg"/> <CroppedBitmap x:Key="croppedImage" Source="{StaticResourceImage_Waterfall}" SourceRect=«1020 512 384"/> </Window.Resources> <Window.Resources> <BitmapImage x:Key="Image_Waterfall" UriSource="/WaterFall.jpg"/> <CroppedBitmap x:Key="croppedImage" Source="{StaticResourceImage_Waterfall}" SourceRect=«1020 512 384"/> </Window.Resources> • Полученное изображение выводится в элемент управления Image. <Image Height="75" HorizontalAlignment="Left" Margin="29,0,0,12" Name="image4" Stretch="Uniform" Width="127" Source="{StaticResourcecroppedImage}" />

  14. Классы Toolbar и ToolBarTray • Класс ToolBarTray представляет собой контейнер для элементов управления ToolBar,управляет расположением, изменением размеров, операциями перетаскивания и упорядочивания элементов управления ToolBar. • В классе ToolBarTrayподдерживается коллекция элементов ToolBar public Collection<ToolBar> ToolBars {get; } • Класс ToolBar является производным откласса ItemsControlи представляет собой контейнер для элементов управления. • В классе ToolBarопределены свойства, которые можно использовать для его размещения внутри контейнера ToolBarTray. public int Band { get; set; } public intBandIndex { get; set; }

  15. Свойство OverflowMode класса Toolbar • В классе ToolBar определено присоединенное свойство OverflowMode public static void SetOverflowMode( DependencyObject element, OverflowMode mode ) ; public static OverflowMode GetOverflowMode( DependencyObject element ); • Присоединенное свойство управляет размещением элементов в панели переполнения и имеет тип OverflowMode – перечисление со значениями: • В примере элемент управления ComboBoxвсегда размещается в панели переполнения. <ToolBar > <Button> <Image Source="{StaticResourceImage_New}" /> </Button> <ComboBox Width="120" SelectedIndex="0" ToolBar.OverflowMode="Always"> <ComboBoxItem > Green </ComboBoxItem> <ComboBoxItem > Red </ComboBoxItem> </ComboBox> </ToolBar >

More Related