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

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


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

Сначала во время разработки установите для элемента 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:

C++ для чайников (Стефан Рэнди Дэвис)

Научитесь программировать! Полное руководство по C++, с учетом стандартов C++ и C++ 14. Вы всегда хотели научиться программировать, но не знали, какой язык...

16 09 2019 22:12:34

Изучаем HTML, XHTML и CSS (Эрик Фримен, Элизабет Робсон)

Устали от чтения книг по HTML, которые понятны только специалистам в этой области? Тогда самое время взять в руки новое издание " Изучаем HTML, XHTML и CSS....

15 09 2019 12:35:36

Изменение разрешения изображения в C#

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

14 09 2019 19:46:49

1С: Бухгалтерия 8.3 для бухгалтера (Николай Селищев)

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

13 09 2019 0:17:45

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

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

12 09 2019 10:44:49

Есть ли способ убить поток в Python?

В Python вы просто не можете убить Thread. Убийство нити устраняет любые гарантии, которые пытаются установить / окончательно блокировать, чтобы вы могли з...

11 09 2019 18:19:45

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

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

10 09 2019 14:19:56


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