Рисование Win7 ThumbnailToolbarButton вручную - PullRequest
0 голосов
/ 21 марта 2011

Работа с Windows 7, .NET 4.0 и C #. Я потратил значительное количество времени на работу с VisualStyleRenderer и различными элементами, которые доступны по умолчанию, с конечной целью - иметь возможность вручную нарисовать 'ThumbnalToolbarButton' на любой поверхности, которую я хочу.

Для тех из вас, кто не знаком с этим компонентом пользовательского интерфейса, пример можно посмотреть здесь: thumbnail toolbar button

ThmubnailToolbarButton на этом изображении - это две кнопки со стрелками; влево, вправо, с правой кнопкой с указателем поворота.

При работе с api preview / thumbnail / thumbnailtoolbar панели задач, либо через взаимодействие, либо через Windows Codepack Code API, эти элементы легко добавляются. Однако я не смог найти способ нарисовать эти элементы вручную. Я даже не уверен, что это выполнимо, но хотел бы обратиться к сообществу за очевидным, что я скучаю, недокументированным или альтернативным методом.

Спасибо, Andrew

обновление

Мне удалось отследить это до класса TaskbandExtendedUI, имени элемента 'LoneControl' в данном визуальном стиле, но я не могу создать элемент для использования VisualStyleRenderer. Похоже, что счетчик частей действителен только до 5, а имя элемента 'LoneControl' находится в шестом индексе в классе TaskbandExtendedUI.

обновление 2

Наконец-то разобрался с этим педерастом. Вот код для выполнения работы:

// class : TaskBandExtendedUI
// part : 1, name :Background
// part : 2, name :BackgroundShadow
// part : 3, name :ListItem
// part : 4, name :Title
// part : 5, name :Border
// part : 8, name :LoneControl
// part : 9, name :LeftControl
// part : 10, name :CenterControl
// part : 11, name :RightControl
// part : 12, name :CloseCaption
// part : 13, name :ScrollBar

protected override void OnPaint(PaintEventArgs e) {
    base.OnPaint(e);

    VisualStyleElement element= VisualStyleElement.CreateElement("TaskbandExtendedUI", 8, 2);
    VisualStyleRenderer renderer = new VisualStyleRenderer(element);

    renderer.DrawBackground(e.Graphics, new Rectangle(100, 100, 100, 100));

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...