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

Сделать владельцем рисованные меню в C#

Рекомендуем: Как открутить болт-секретку на колесе авто без специального ключа
eda2480d

Проще всего использовать меню со стандартным внешним видом, но вы можете сделать владельцы рисованных меню, если хотите. Это не сложно, но вам нужно выполнить несколько шагов.

Сначала во время разработки установите для элемента OwnerDraw элемент управления MenuItem значение true. Затем во время выполнения вы должны ответить на два события для меню: MeasureItem и DrawItem.

Обработчик событий MeasureItem получает в качестве параметра объект типа MeasureItemEventArgs. Код должен устанавливать свойства объекта ItemHeight и ItemWidth этого объекта, чтобы сообщить программе, сколько места требуется для пункта меню.

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

Python

Этот код начинается с некоторых констант, которые определяют шрифт, который программа будет использовать для рисования элемента меню. Обработчик события MeasureItem создает шрифт и использует e.Graphics.MeasureString, чтобы узнать, сколько пространства требуется в этом шрифте для текста. Затем он устанавливает e.ItemHeight и e.ItemWidth соответственно.

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

.

Python

Обработчик события создает шрифт, а затем проверяет e.State, чтобы увидеть, находится ли мышь над пунктом меню. Если это так, программа рисует фон градиента и текст меню в AliceBlue. Если мышь не находится над пунктом меню, программа рисует простой светло-серый фон с черным текстом.

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

Значение e.State может указывать другие свойства элемента меню. Например, он может сказать вам, если элемент отключен, отмечен или находится в его визуальном состоянии по умолчанию. Вы можете изменить способ, которым вы рисуете элемент, если хотите.

Источник: http://csharphelper.com/blog/2015/01/make-owner-drawn-menus-in-c/



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

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


Как объекты становятся пригодными для сбора мусора в Java?

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

21 06 2021 15:36:32

Разница между HashSet и HashMap в Java

Как следует из названий, HashMap является ассоциативной Map, а HashSet - это просто Set. Но они совершенно разные конструкции. HashMap - это реализация инт...

20 06 2021 22:28:43

Как узнать реальное время в Unity 5 при помощи ntp сервера.

В этом уроке мы разберем, как узнать реальное время в Unity 5 при помощи ntp сервера для избежания "читерства" переводом времени на локальной машине....

19 06 2021 16:58:49

Преобразование двоичного числа в десятичное в C#

В этой статье мы напишем программу на C# для выполнения преобразования из двоичного числа в десятичное. Вывод:  ...

18 06 2021 7:19:37

Что такое анонимная функция в JavaScript?

Два наиболее распространенных способа создания функции в Javascript - это использование объявления функции или оператора функции. Анонимные функции создают...

17 06 2021 9:41:52

Используйте объект ImageAttributes для преобразования изображения в оттенки красного, зеленого или синего в C#

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

16 06 2021 20:46:58

Eclipse

Eclipse — бесплатная IDE модульных кроссплатформенных приложений. В первую очередь служит для разработки расширений, в чем и заключается главное её преимущ...

15 06 2021 12:28:19

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

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

14 06 2021 13:53:38

Перебрать записи в массиве неизвестной длины в C#

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

13 06 2021 21:43:25

Стандартные исключения в C#

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

12 06 2021 11:53:49

Анимация изображений в C#

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

11 06 2021 18:29:31

Изменение ориентации и полей печати в C#

В этом примере показано, как изменить ориентацию и поля печати в распечатке или предварительном просмотре печати. По умолчанию, когда вы показываете предва...

10 06 2021 13:13:16

Инициализировать двумерные массивы в C#

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

09 06 2021 19:49:56

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

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

08 06 2021 17:55:47

Ассемблер - это просто. Учимся программировать. (Калашников О. А.)

Подробно и доходчиво объясняются все основные вопросы программирования на ассемблере. Рассмотрены команды процессоров Intel, 16- и 32-разрядные регистры, о...

07 06 2021 5:49:36

Как динамически добавлять элементы html с помощью JavaScript?

HTML-документы можно легко получить и обработать с помощью HTML DOM, который представляет собой HTML-документ в виде древовидной структуры. Когда HTML-доку...

06 06 2021 2:20:36

Итерации над элементами массивов и списков в C#

Вы можете использовать цикл foreach для перебора элементов массивов, списков, коллекций и других объектов с методом GetEnumerator. Этот цикл часто больше п...

05 06 2021 5:58:39

Отображение предопределенных значков системы в C#

В этом примере отображаются доступные системные значки. Следующий способ DrawIconSample отображает значок и его название. Код вызывает метод Graphics объек...

04 06 2021 14:27:29

Сортировка и поиск массивов в C#

Класс Array предоставляет несколько полезных методов работы с массивами. Два из них позволяют сортировать и искать массивы. В следующем коде показано, как...

03 06 2021 4:54:23

Многопоточный сервер сокетов в Python

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

02 06 2021 10:31:55

Какое использование лямбда в Python?

Лямбда, 11-я буква греческого алфавита, является символом длины волны. Лямбда исходит из исчисления Лямбды и относится к анонимным функциям программировани...

01 06 2021 18:31:20

Рисуем гладкий текст в GraphicsPath в C#

Вы можете установить свойство TextRenderingHint объекта Graphics для AntiAliasGridFit, чтобы нарисовать гладкий текст. Однако, если вы поместите текст в об...

31 05 2021 23:57:43

Печать изображений в C#

В этом примере показан простой способ печати изображений. Когда вы печатаете, обработчик события PrintPocument PrintDocument предоставляет объект Graphics...

30 05 2021 23:36:47

Сделать свойство индексатора по умолчанию для класса в C#

Классы, такие как Dictionary и List предоставляют свойство индексатора по умолчанию, которое позволяет вам получать доступ к значениям, используя синтаксис...

29 05 2021 5:14:30

Бизли Д. Python. Подробный справочник (4-е издание, 2010)

Авторитетное руководство и детальный путеводитель по языку программирования Python предназначен для практикующих программистов. Книга компактна, нацелена н...

28 05 2021 20:19:48

StringTokenizer в Java

Класс StringTokenizer пакета Java.util позволяет приложению разбивать или разбивать строку на мелкие части с помощью определенного разделителя (пробел явля...

27 05 2021 21:52:24

Разница между JavaScript и ECMAScript?

ECMA означает Европейскую ассоциацию производителей компьютеров. ECMAScript - это стандарт языка программирования, такой как lisp. JavaScript - это реализа...

26 05 2021 19:44:28

Используйте объект ImageAttributes для преобразования изображения в оттенок сепии в C#

В этом примере был изменен предыдущий пример Использовать объект ImageAttributes для преобразования изображения в монохромный в C# для преобразования изобр...

25 05 2021 10:57:59

Печатать звезды в C#

В этом примере показано, как вы можете печатать звезды с определенными размерами на C#. Недавно кто-то связался со мной, спрашивая, знаю ли я о программе,...

24 05 2021 0:21:53

Что такое классы-оболочки в Java

Как сказано в названии, класс-оболочка обертывает (охватывает) вокруг типа данных и дает ему вид объекта. Они используются для преобразования любого примит...

23 05 2021 12:57:33

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

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

22 05 2021 18:30:58

Циклы в Bash (for, while, until, break, continue, select)

В этом разделе нашего учебного пособия по Bash мы рассмотрим различные форматы циклов for, while, until, доступные нам, а также break, continue, select...

21 05 2021 5:13:24

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

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

20 05 2021 1:18:33

Выбор языка программирования: 6 пунктов при выборе своего языка

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

19 05 2021 21:21:22

В чем разница между временем выполнения и временем компиляции?

Время выполнения и время компиляции - это термины программирования, которые относятся к разным этапам разработки программного обеспечения. Время компиляции...

18 05 2021 15:57:24

Может ли класс верхнего уровня быть закрытым или защищенным в Java

Нет. Класс верхнего уровня как закрытый был бы совершенно бесполезен, потому что ничто не имело бы к нему доступа. Если класс верхнего уровня объявлен как...

17 05 2021 15:45:33

Как программировать на Visual C# 2012 (Пол Дейтел, Харви Дейтел)

Эта книга, выходящая уже в пятом издании, является одним из самых популярных в мире учебников по программированию на платформе Microsoft .NET на языке Visu...

16 05 2021 21:12:33

Операторы сравнения! = Не равны в Python

Вы можете использовать! = И не для не равной операции в Python. Пример Пример Источник: http://net-informations.com/python/iq/not.htm...

15 05 2021 6:48:38

В чем разница между JDK и JRE?

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

14 05 2021 13:44:50

Как предотвратить модификацию объекта в JavaScript?

Существует множество способов блокировки объекта в соответствии с вашими потребностями. Object.freeze() Object.seal() Object.preventExtensions() Object.fre...

13 05 2021 13:30:39

Назначение оператора «/» и «//» в python?

Разделение («/»): делит левый. Отдел работает на Python так, как он математически определен. Floor Division ("//"): разделение операндов, где результатом я...

12 05 2021 10:53:32

Класс FileReader в Java

FileReader - это характерно-ориентированный класс, который используется для обработки файлов в Java. Он предназначен для чтения потоков символов. Один симв...

11 05 2021 7:34:27

Преобразование Enum в String в C#

В этой статье мы напишем программу C# для преобразования Enum в String с использованием метода ToString(). Вывод: The value of this instance is Pink Источн...

10 05 2021 5:24:19

Как записать write() в файл Python

После изучения того, как открыть и закрыть файл в Python , откройте файл, тогда мы напишем в него случайный текст с помощью метода write() . Чтобы записать...

09 05 2021 22:49:30

Бухгалтерский и налоговый учет в 1С:Бухгалтерии 8 (С.Харитонов)

В пособии " Бухгалтерский и налоговый учет в 1 С: Бухгалтерии 8" рассматривается технология ведения бухгалтерского и налогового учета в программе "1 С: Бухгалте...

08 05 2021 20:55:41

Что такое числовое продвижение? Java

Числовое продвижение, также известное как « Неявное преобразование» или «автоматическое преобразование Java», где автоматическое преобразование значения мен...

07 05 2021 4:27:26

Центрировать курсор над определенным элементом управления в C#

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

06 05 2021 15:43:21

Перезапустите диспетчер очереди печати в C#

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

05 05 2021 7:52:35

Почему Java не поддерживает указатели?

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

04 05 2021 23:33:22

Итерации по элементам в массиве с неизвестными параметрами в C#

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

03 05 2021 21:41:39

Еще:
Программирование -1 :: Программирование -2 :: Программирование -3 :: Программирование -4 :: Программирование -5 ::

И сказал Великий Программист:
«После трёх дней без программирования жизнь теряет смысл»