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

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

На нашем литературном портале можно бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю, Троелсен Эндрю . Жанр: Базы данных. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале litmir.org.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Название: Язык программирования C#9 и платформа .NET5
Дата добавления: 22 август 2024
Количество просмотров: 172
Читать онлайн

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту readbookfedya@gmail.com для удаления материала

Язык программирования C#9 и платформа .NET5 читать книгу онлайн

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

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле.

Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных.

Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

Перейти на страницу:

На заметку! По умолчанию метод VisualTreeHelper.HitTest() возвращает объект UIElement самого верхнего уровня, на котором совершен щелчок, и не предоставляет информацию о других объектах, расположенных под ним (т.е. перекрытых в Z-порядке).

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

До настоящего момента вы применяли объекты типов, производных от Shape, для визуализации содержимого элементов RadioButton с использованием разметки XAML и заполняли Canvas в коде С#. Во время исследования роли кистей и графических трансформаций в данный пример будет добавлена дополнительная функциональность. К слову, в другом примере главы будут иллюстрироваться приемы перетаскивания на объектах UIElement. А пока давайте рассмотрим оставшиеся члены пространства имен System.Windows.Shapes.

Работа с элементами Polyline и Polygon

В текущем примере используются только три класса, производных от Shape. Остальные дочерние классы (Polyline, Polygon и Path) чрезвычайно трудно корректно визуализировать без инструментальной поддержки (такой как инструмент Blend для Visual Studio или другие инструменты, которые могут создавать векторную графику) — просто потому, что они требуют определения большого количества точек для своего выходного представления. Ниже представлен краткий обзор остальных типов Shapes.

Тип Polyline позволяет определить коллекцию координат (х, у) (через свойство Points) для рисования последовательности линейных сегментов, не требующих замыкания. Тип Polygon похож, но запрограммирован так, что всегда замыкает контур, соединяя начальную точку с конечной, и заполняет внутреннюю область с помощью указанной кисти. Предположим, что в редакторе Kaxaml создан следующий элемент StackPanel:

<b>&lt;!-- Элемент Polyline не замыкает автоматически конечные точки --&gt;</b>

&lt;Polyline Stroke =&quot;Red&quot; StrokeThickness =&quot;20&quot; StrokeLineJoin =&quot;Round&quot;

          Points =&quot;10,10 40,40

10,90 300,50&quot;/&gt;

<b>&lt;!-- Элемент Polygon всегда замыкает конечные точки --&gt;</b>

&lt;Polygon Fill =&quot;AliceBlue&quot; StrokeThickness =&quot;5&quot; Stroke =&quot;Green&quot;

          Points =&quot;40,10 70,80 10,50&quot; /&gt;

На рис. 26.2 показан визуализированный вывод в Kaxaml.

Работа с элементом Path

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

Применяя только типы Rectangle, Ellipse, Polygon, Polyline и Line, нарисовать детализированное двумерное векторное изображение было бы исключительно трудно, т.к. упомянутые примитивы не позволяют легко фиксировать графические данные, подобные кривым, объединениям перекрывающихся данных и т.д. Последний производный от Shape класс, Path, предоставляет возможность определения сложных двумерных графических данных в виде коллекции независимых геометрических объектов. После того, как коллекция таких геометрических объектов определена, ее можно присвоить свойству Data класса Path, где она будет использоваться для визуализации сложного двумерного изображения.

Свойство Data получает объект класса, производного от System.Windows.Media.Geometry, который содержит ключевые члены, кратко описанные в табл. 26.2.

Классы, которые расширяют класс Geometry (табл. 26.3), выглядят очень похожими на свои аналоги, производные от Shape. Например, класс EllipseGeometry имеет члены, подобные членам класса Ellipse. Крупное отличие связано с тем, что производные от Geometry классы не знают, каким образом визуализировать себя напрямую, поскольку они не являются UIElement. Взамен классы, производные от Geometry, представляют всего лишь коллекцию данных о точках, которая указывает объекту Path, как их визуализировать.

На заметку! Класс Path не является единственным классом в инфраструктуре WPF, который способен работать с коллекцией геометрических объектов. Например, классы DoubleAnimationUsingPath, DrawingGroup, GeometryDrawing и даже UIElement могут использовать геометрические объекты для визуализации с применением свойств PathGeometry, ClipGeometry, Geometry и Clip соответственно.

В показанной далее разметке для элемента Path используется несколько типов, производных от Geometry. Обратите внимание, что свойство Data объекта Path устанавливается в объект GeometryGroup, который содержит объекты других производных от Geometry классов, таких как EllipseGeometry, RectangleGeometry и LineGeometry. Результат представлен на рис.26.3.

<b>&lt;!-- Элемент Path содержит набор объектов Geometry,</b>

Перейти на страницу:
Комментариев (0)