Путь разработчика    

Выделение эллипса в программе WPF с использованием C#

eda2480d

В этом примере показано, как вы можете визуализировать эллипс в программе WPF. Обычно для рисования фигур в WPF вы используете какой-то объект. Вы можете добавить Ellipse, Line, Path, Polygon, Polyline и Rectangle к окну, и эти формы перерисовывают, когда это необходимо.

Однако иногда вы можете рисовать окно во время выполнения без создания таких объектов. Программы WPF не предоставляют событие Paint, как это делают приложения Windows Forms, поэтому вы не помещаете свой код. Вместо этого вы должны переопределить метод OnRender окна (или другого элемента управления). Этот метод предоставляет параметр DrawingContext с именем drawingContext, который можно использовать для рисования (так же, как обработчик событий Paint) предоставляет Graphics tt>, который можно использовать для рисования). Рисование внутри метода OnRender достаточно прост, хотя есть несколько уловов.

Во-первых, если вы рисуете окно, вам нужно установить свойство Background окна в Transparent. Если вы этого не сделаете, то окно, похоже, нарисовало его фон после вызова метода OnRender, чтобы все, что вы нарисовали, не появилось.

Во-вторых, мне еще предстоит найти хороший способ определить размер клиентской области окна - его область без границ, заголовок, меню и т. д. К счастью, достаточно легко обойти. Просто получите размер основного объекта содержимого окна, который по умолчанию является элементом управления Grid. Чтобы сделать это проще, в этом примере я устанавливаю основное свойство Grid элемента управления Name в grdMain. Затем код может просто использовать grdMain.ActualWidth и grdMain.ActualHeight, чтобы получить размеры клиентской области.

Следующий код показывает, как программа рисует эллипс всякий раз, когда форма отображается.

Python

Сначала код рисует белый прямоугольник в окне, чтобы очистить его фон. Затем он создает синюю ручку. Обратите внимание, что в WPF вы передаете конструктор Pen a Brush не просто цвет. Это связано с тем, что WPF заполняет строки, а не просто рисует их. Это кажется странным, если вы используете линии с одним пикселем для рисования фигур, но чертежи WPF масштабируемы. Если вы увеличиваете масштаб рисунка, линии становятся толще, а затем вы можете увидеть затенение или узор в кисти линии. (Это по-прежнему кажется мне немного странным. Многие программы рисуют сплошные линии. Странно, что WPF предоставляет стандартные сплошные кисти, но не стандартные сплошные линии.)

Обратите внимание, что класс Pen WPF не имеет метода Dispose, поэтому вы не можете размещать ручки или создавать их в с помощью операторов. р>

После создания своего пера программа вычисляет центр клиентской области. Он вычитает половину ширины / высоты пера из ширины / высоты клиентской области, чтобы эллипс просто касался краев окна. Программа заканчивается с помощью метода DrawingContext объекта DrawEllipse для рисования эллипса.

Источник: http://csharphelper.com/blog/2015/04/render-an-ellipse-in-a-wpf-program-using-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Использовать лямбда-выражения в C#

Лямбда-выражения в основном представляют собой сокращенную нотацию для создания анонимного метода. Существует несколько форматов, самый простой из которых...

04 12 2020 5:51:19

C# Программирование на языке высокого уровня (Т.А. Павловская)

Книга "C# Программирование на языке высокого уровня" представляет собой учебный курс по программированию на языке C#. Автор рассказывает в своей книге об о...

03 12 2020 10:26:53

Как заставить пользователя ввести float в C#

Это изменение замечательно просто. ( Почти так, как я это планировал, да?) Ключевым методом, определяющим, является ли новое значение TextBox допустимым, яв...

02 12 2020 12:14:20

Многопользовательские игры. Разработка сетевых приложений (Глейзер Дж.)

Многопользовательские игры. Разработка сетевых приложений: Сетевые многопользовательские игры — это многомиллиардный бизнес, привлекающий десятки миллионов...

01 12 2020 10:45:59

Как нарисовать текст, заполненный картиной в C#

В этом примере показано, как вы можете нарисовать текст, заполненный изображением. Он использует два изображения, добавленные в проект в качестве ресурсов....

30 11 2020 7:58:16

1С:Предприятие. Бухгалтерский учет. Секреты работы (Наталья Рязанцева)

Книга "1 С: Предприятие. Бухгалтерский учет. Секреты работы" посвящена системе программ ведения автоматизированного учета на предприятиях, в организациях и у...

29 11 2020 11:37:51

Что такое делегаты в C#?

Делегаты - это указатель функции безопасного типа.  Он содержит ссылку на функцию. Подпись делегатов соответствует сигнатуре функции, которая указывает на т...

28 11 2020 2:56:14

Обработка исключений на Python

Что такое исключение? Исключение является нежелательным событием , которое прерывает нормальный поток программы. Это может быть ошибка программирования, пы...

27 11 2020 22:18:51

Нарисуйте водяной знак в C#

Пример Использование ColorMatrix для добавления водяного знака к изображению на C# показывает один способ добавления водяного знака к изображению. В этом п...

26 11 2020 13:54:29

Как рандомизировать двумерные массивы в C#

В этом примере используется следующий метод расширения для рандомизации двумерных массивов. Чтобы рандомизировать двумерные массивы, код начинается с получ...

25 11 2020 1:37:55

Язык программирования C# (Хейлсберг А. 2012)

Перед вами — четвертое издание главной книги по языку C#, написанной легендой программирования — Андерсом Хейлсбергом, архитектором C#, Delphi и Turbo Pasc...

24 11 2020 8:40:21

PHP и MySQL. Исчерпывающее руководство (Бретт Маклафлин)

Если у вас есть опыт разработки сайтов с помощью CSS и Javascript, то эта книга переведет вас на новый уровень веб-разработки — создание динамических веб-с...

23 11 2020 18:28:27

Многопоточное программирование в Python

Что такое Threading? Поток исполнения является наименьшим последовательность запрограммированных инструкций , которые могут управляться независимо друг от...

22 11 2020 13:32:25

Самоучитель C++ (Г. Шилдт)

Необходимость в переработке и дополнении предыдущего издания книги вызвана в первую очередь выходом в свет долгожданного для программистов всего мира едино...

21 11 2020 0:58:13

Класс BufferedWriter в Java

Класс BufferedWriter обладает функциональностью записи буферов символов в файл. Он расширяет Writer, который является абстрактным классом для записи потоко...

20 11 2020 1:28:55

Определение и использование бит-маски в C#

Пример Понимание бит-масок в C# объясняет, как использовать бит маски. Чтобы определить битовую маску, просто создайте enum и присвойте ему атрибут Flags,...

19 11 2020 22:39:18

Используйте ключевое слово params в C#

Если вы используете ключевое слово params перед параметром массива, используемым в качестве параметра last в методе, тогда вызывающий код может передавать...

18 11 2020 15:22:33


Parse error: syntax error, unexpected ',' in /home/users/9/9165884745/domains/flash-mx.ru/lessons/926.php on line 69