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

Рисуем деревья вертикально или горизонтально в C#

eda2480d

Пример Обработать общие события мыши TreeNode в C# показывает, как создать общий класс узлов, который может рисовать деревья с узлами, которые содержат что угодно. В этом примере каждый узел центрируется по его поддереву.

Этот пример изменяет это, чтобы вы могли рисовать деревья, ориентированные вертикально, как это делает элемент управления TreeView.

Основные отличия между этой программой и предыдущей версией заключаются в том, как узел упорядочивает и рисует сам. Следующий код показывает, как узел упорядочивается, если его ориентация вертикальна.

Python

...

Затем код устанавливает центр данных. Эта позиция имеет то же положение Y, что и пятно, и сдвигается вправо на радиус пятна плюс половина оттянутой ширины данных.

Затем код обновляет допустимое минимальное значение Y ymin и рекурсивно вызывает методы дочерних узлов ArrangeVertically, чтобы упорядочить дочерние узлы.

Если вы сравните это с кодом, используемым в предыдущем примере, чтобы упорядочить дерево по горизонтали, вы обнаружите, что это намного проще. (Этот код также включен в этот метод ArrangeHorizontally этого примера.)

Когда программа рисует деревья, она использует два шага. Сначала он рисует связи между узлами, а затем сам рисует узлы. Следующий код показывает, как класс TreeNode рисует ссылки для вертикально ориентированного дерева.

Python

Для каждого из дочерних узлов этот код рисует вертикальную линию от пятна узла до положения слева от точки ребенка. Затем он рисует линию от этой позиции до места ребенка. Код заканчивается рекурсивным вызовом метода child DrawSubtreeLinksVertical для рисования ссылок для поддерева child.

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

Python

Сначала код вызывает метод Draw объекта узла Data, чтобы сделать сам объект. Затем, если ориентация узла вертикальна, код рисует пятно слева от узла. Он заполняет пятна узлов листа оранжевым, а пятна нелистовых узлов - светло-голубыми.

Источник: http://csharphelper.com/blog/2016/08/draw-trees-vertically-or-horizontally-in-c/



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

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

Java для чайников (Барри Берд)

Java — современный объектно-ориентированный язык программирования. Программа, написанная на Java, способна выполняться практически на любом компьютере. Зна...

25 02 2021 16:30:14

Отображение контекстного меню для элементов TreeView в C#

В этом примере отображаются различные контекстные меню при щелчке правой кнопкой мыши на разных типах узлов в элементе управления TreeView. В этом примере...

24 02 2021 19:46:53

Калькулятор на C#

...

23 02 2021 14:54:34

Используйте tristate CheckBox в C#

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

22 02 2021 22:32:57

HTML5 для веб-дизайнеров (Кит Джереми)

В HTML5 появилось много интересных тэгов, в том числе поддержка аудио и видео-файлов. Теперь вам не надо тратить время на установку плагинов для проигрыван...

21 02 2021 9:19:34

Разница между @staticmethod и @classmethod в Python

Python @classmethod означает, что при вызове этого метода мы передаем класс как первый аргумент вместо экземпляра этого класса («self»). Функция @classmeth...

20 02 2021 11:10:35

Позвольте пользователю писать с различными стилями линии в C#

Пример Позвольте пользователю набросать на PictureBox в C# объясняет, как разрешить пользователю рисовать полилинии, но программа только рисует тонкие черн...

19 02 2021 12:16:33

Программирование под Android. 2-е изд. (Зигард Медникс, Лайрд Дорнин, Блэйк Мик)

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

18 02 2021 4:46:26

Сортировка элемента управления ListView, используя все его столбцы в C#

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

17 02 2021 8:55:34

Выберите разрешение принтера в C#

В этом примере показано, как разрешить пользователю выбирать разрешение принтера. Когда вы устанавливаете принтер объекта PrintDocument, его коллекция Defa...

16 02 2021 20:18:29

Код рефакторинга в C#

Что такое рефакторинг?  Это процесс улучшения читаемости, сложности и производительности кода путем изменения: Внутренняя структура кода. Внешнее поведение...

15 02 2021 19:33:34

Что означает __name __ == '__ main__' в Python?

Как и в других языках программирования, Python также имеет точку входа для выполнения, т. е. Main. Модуль - это файл, содержащий определения и утверждения...

14 02 2021 2:35:24

Функции в JavaScript

Функции - это «автономные» модули кода, которые выполняют определенную задачу. Он содержит инструкции, используемые для создания вывода с его ввода. Чтобы...

13 02 2021 15:43:58

Почему класс Java не может быть объявлен как статический?

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

12 02 2021 4:44:29

Пространство имен в C#

Пространства имен - это программные элементы C#, предназначенные для организации ваших программ. Они также помогают избежать столкновений имен между двумя...

11 02 2021 7:27:24

Нарисуйте масштабированное нормальное распределение в C#

Пример Нарисовать нормальную кривую распределения в C# показывает, как для нормального распределения. К сожалению, для некоторых средств и стандартных откл...

10 02 2021 0:25:51

Как получить IP-адрес в Python

Модуль сокетов в Python обеспечивает доступ к интерфейсу сокетов BSD. Имя socket.gethostbyname (имя хоста) переводит имя хоста в формат адреса IPv4. Адрес...

09 02 2021 8:10:26

Как использовать * args и ** kwargs в Python

Параметр с ** (двойной звездой) и * (звезда) позволяет определять функции для принятия и для пользователей передавать любое количество аргументов, position...

08 02 2021 20:30:11

Печать в полном масштабе на C#

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

07 02 2021 18:13:47

MySQL 5.0. Библиотека программиста (Виктор Гольцман)

Эта книга предназначена для всех, кто желает освоить С У Б Д MySQL. Для ее чтения вам не нужны никакие специальные знания – достаточно быть пользователем Wind...

06 02 2021 6:27:45

Вызов общедоступных методов, используя их имена в C#

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

05 02 2021 13:46:47

Чтение и запись CSV-файлов в Python

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

04 02 2021 16:14:18

Новая большая книга CSS (Дэвид Макфарланд)

Технология CSS3 позволяет создавать профессионально оформленные сайты, но тонкости этого языка могут оказаться довольно сложными даже для опытных веб-разра...

03 02 2021 23:49:11

Нарисуйте пунктирные линии с разными стилями в C#

Чтобы нарисовать пунктирные линии, создайте новый Pen и установите его свойство DashStyle, чтобы указать стиль тире, который вы хотите. Например, следующий...

02 02 2021 21:15:55

Сжатие файлов JPG до определенного размера в C#

Пример Оптимизация уровня сжатия JPEG и файла размер в C# показывает, как сохранить JPG-файл с различными уровнями сжатия. Использование меньшего уровня де...

01 02 2021 22:55:31

Изучаем JavaScript (Моррисон М.)

Вы готовы сделать шаг вперед в своей практике веб-программирования и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда при...

31 01 2021 4:28:34

Что такое поток Daemon в Java

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

30 01 2021 0:55:15

Сериализация и десериализация в Java

Что такое фильтр ввода-вывода и как его использовать в Java?... Интерфейс маркера Интерфейс Serializable является «маркерным» интерфейсом. Это означает, чт...

29 01 2021 3:58:42

Как определить тип экземпляра и наследование в Python

Метод isinstance() проверяет, является ли объект экземпляром класса, тогда как метод issubclass() запрашивает, является ли один класс подклассом другого кл...

28 01 2021 14:42:16

Как задать размер и положение другого приложения в C#

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

27 01 2021 15:22:40

Отображение местного времени и GMT в C#

В этом примере используется Timer для выполнения следующего кода каждые полсекунды. Вначале используется DateTime.Now для получения текущей даты и времени....

26 01 2021 3:14:29

Что такое отказобезопасные и отказоустойчивые итераторы в Java

Неуправляемые итераторы Fail-Fast iterators, возвращенные большинством типов коллекций, не переносят каких-либо структурных изменений в коллекции, итерации...

25 01 2021 20:27:11

Turbo Pascal: Учебник (С. А. Немнюгин)

Цель данного учебного курса - обучить программированию на Паскале, точнее, на том его расширении, которое было создано фирмой Borland и называется Турбо Па...

24 01 2021 19:38:40

Как сделать текстовый файл ресурсом проекта в C#

Это удобно для включения большого количества текста в качестве ресурса проекта вместо помещения текста непосредственно в код или включения файла в установо...

23 01 2021 2:48:11

Сравниние производительности простых арифметических операций в C#

На днях я увидел сообщение о том, что упомянутое деление было самой медленной арифметической операцией, поэтому я написал этот пример, чтобы точно увидеть,...

22 01 2021 7:43:57

Метод Substring в C#

Метод Substring в строке C#. Класс возвращает новую строку, которая является подстрокой этой строки. Подстрока начинается с указанного заданного индекса и...

21 01 2021 18:17:56

Пройти по значению или пройти по ссылке? JavaScript

В JavaScript у нас есть функции, и у нас есть аргументы, которые мы передаем этим функциям. Но как JavaScript обрабатывает то, что вы проходите, не всегда...

20 01 2021 17:32:31

Операции Java LinkedList

Связанные списки относятся к простейшим и наиболее распространенным структурам данных. Массивы и связанные списки аналогичны, так как они хранят коллекции...

19 01 2021 13:37:39

C++. От ламера до программера. Включая C++11 (Эллайн Алекс)

Описание книги C++. От ламера до программера. Включая C++11: Эта книга предлагает быстрый способ изучить принципы объектно-ориентированного программирования...

18 01 2021 20:54:31

Сделайте анимацию анимации в C#

В этом примере показано, как сделать анимацию ограничивающего шара. Когда форма загружается, выполняется следующий код. Этот код инициализирует положение ш...

17 01 2021 0:17:10

Ассемблер на примерах. Базовый курс (Рудольф Марек)

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

16 01 2021 9:57:14

Обеспечить автосохранение в C#

Этот пример расширяет пример scribble (наиболее недавно описанный в post Предоставить отменить и повторить в C# ), поэтому он предоставляет функцию автомат...

15 01 2021 17:46:44

Важные особенности Java

Ниже перечислены некоторые важные особенности языка программирования Java: Простой Независимый от платформы Архитектурный Нейтральный Динамический и расшир...

14 01 2021 14:42:10


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