Как нарисовать элементы пользовательского интерфейса с выключенными визуальными стилями? - PullRequest
4 голосов
/ 08 ноября 2011

У меня есть нарисованный владельцем элемент управления, в котором мне нужно нарисовать поле расширения («плюс / минус») в виде дерева. С включенными визуальными стилями это просто, просто создайте рендер для соответствующего VisualStyleElement :

VisualStyleElement element = VisualStyleElement.TreeView.Glyph.Opened
VisualStyleRenderer renderer = new VisualStyleRenderer( element );
Size size = renderer.GetPartSize( graphics, ThemeSizeType.True );
...
renderer.DrawBackground( graphics, someRect );

Можно ли добиться подобного эффекта, когда визуальные стили отключены? Я знаю, что существует класс ControlPaint , который может рисовать целые элементы управления, но как мне нарисовать (и получить размер) только часть элемента управления TreeView ?

1 Ответ

1 голос
/ 08 ноября 2011

Без VisualStyles я думаю, что плюсовые и минусовые элементы управления - это просто вызовы методов DrawRectangle и DrawLine.

Часть Rectangle выглядит так, как будто используется цвет SystemColors.Control, а часть Plus / Minus выглядит как SystemColors.ControlText(или черный).

enter image description here

...