|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77, по иконкам. Судя по официальному описанию , процесс создания иконок многоступенчатый, и включает использование таких программных пакетов как Macromedia FreeHand или Adobe Illustrator, Adobe Photoshop, GIF Movie Gear. В процессе происходит перевод с включённым антиалиайзингом (что подразумевает создание карты прозрачности) векторного оригинального изображения в растровое (возможно, есть альтернатива - уменьшение большого растрового оригинала), и применение эффекта наложения тени. В общем, попытка автоматизации этого процесса требует экспериментов. Проверил - в ресурсах XP-шного Explorer.exe десяток 32-битных иконок с альфа-каналом, в iexplore.exe тоже есть несколько. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 13:47 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Бенедикт, по иконкам ладно, я все уже переделал на 32bit-icon С размерами кнопок ничего не получается. БенедиктПо высоте-ширине кнопок: Ни Ваш код, ни то что пытался делать я до этого (по сути тоже самое) не увеличивает высоту тулбара по вертикали. Т.е. размер кнопок увеличивается, но сам Тулбар по вертикали не увеличивается, т.е. кнопки срезаются, причем срезает именно сам Тулбар, ибо если увеличить высоту CoolBar добавлением соседней панели с высоким скажем TextBox, то все равно срезает. Я уж пытался ImageList использовать с картинками 24х24 напр.(маленькую 16х16 вставляешь в центр большой картинки), и опять высота тулбар маленькая. Т.е. идея какая: кнопку сделать чуть больше, скажем 24х24 (или 20х20), может чуть вытянуть по ширине(это получается хоть и с нелинейностью какой-то), а посередине картинка 16х16, чтоб налеплено не было, да и градиентная полоса пошире была, опять же экспериментировать надо как красивше. Но суть в том что сам эксперимент не удается поставить из-за срезания кнопок в Toolbar снизу. И кстати если использовать 16х16, то надо еще чтоб это 16 по центру кнопки было, а не в левом верхнем углу. БенедиктДмитрий77Лишний контрол+таки лишняя OCX...Рано думать об оптимизации. Так вроде ж нарисовал уже ребар через API. Только как ему "vbTop" авто-обеспечить? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 14:29 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77, кнопки 50*32. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 15:38 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Бенедикт, понятно я копал под Тулбар, а надо было копать таки под ребар. Код: plaintext 1. 2. 3.
Думаю оптимально вот так (это при 16х16) SendMessage g_hwndToolBar, TB_SETBUTTONSIZE, 0, ByVal MAKELONG(32, 32) И убрать таки Or RBBS_CHILDEDGE А Or RBBS_GRIPPERALWAYS напротив мысль очень понравилась, давно хотел это сделать с vb-тулбар/coolbar, потом забил. Код: plaintext 1.
Как бы положение картинки по центру кнопки в лоб задать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 16:40 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Бенедикт, Дмитрий77По вертикали картинка теперь "автоматом" ложится по центру(но почему-то не в вашем примере а в моей реализации сделанной из вашей предыдущей), такое ощущение что это делает манифест, в IDE она вверху. Но по горизонтали она слева-таки. Как бы положение картинки по центру кнопки в лоб задать? Получается ровно по центру если убрать Or TBSTYLE_LIST. Но в вашем крайнем примере что-то не то с центровкой по вертикали, а в "моем" почему-то "то" если exe запускать. Разница что у меня ImageList: иконки через makeintresource, а у Вас VB-Imagelist c битмапами. Что-то еще в стиле Rebar не хватает типа рамочки что-ли. И чтоб ребар (в API-шном варианте) перерисовывался OnTop при Form_Resize... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 17:02 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77Что-то еще в стиле Rebar не хватает типа рамочки что-ли. И чтоб ребар (в API-шном варианте) перерисовывался OnTop при Form_Resize... Вообще требуемая "рамочка" (по всему судя относится к CoolBar/Rebar) возникает автоматически 1. Для VB-Coolbar: автоматически для всех стилей Классика/XP/Vista 2.Для API-Rebar автоматически для XP/Vista Для классики почему-то нет. Но вижу кажется проблему. Подложная картинка собой замазывает этот контур: снизу точно. Или надо делать чтоб не замазывала, либо этот контур должен быть нижней частью самой градиентной картинки... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 17:40 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
И все таки "сим-сим откройся" . Код: plaintext
http://ukintel.deviantart.com/art/Vista-Visual-Style-Classes-87482323 Дмитрий77Получается ровно по центру если убрать Or TBSTYLE_LIST. Но в вашем крайнем примере что-то не то с центровкой по вертикали, а в "моем" почему-то "то" если exe запускать. Разница что у меня ImageList: иконки через makeintresource, а у Вас VB-Imagelist c битмапами.... По вертикали картинка центрируется манифестом. Дмитрий77И чтоб ребар (в API-шном варианте) перерисовывался OnTop при Form_Resize... Код: plaintext 1. 2.
Для классики почему-то нет... Вопрос остался. Нижняя картинка это иллюстрирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2010, 03:16 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77, ну вот, значит есть тематические заливки. По границе и размерам для "классики" в приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2010, 13:20 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
БенедиктПо границе и размерам для "классики" в приложении. Да, спасибо, суть понял. Код: plaintext
==================================================== Вообще конечно без Вашего тест-примера, правильным образом поставленного я бы это не осилил, наверное, хотя и получается что Ваша реализация заливки через GDI+- теперь как бы не при делах. Просто Google это хорошо, но надо еще чувствовать-знать чего ищешь и под каким углом. До Spy+- итд руки не дошли... В принципе, поставленная задача решена 100%. "Communications" это и есть то чего хотелось. Тем не менее, пока не "притупилось", я бы чуть глубже копнул. 1. Среди всех стилей кот. я засунул в Combobox нет основного, мутно-зеленого градиента, кот. Виста использует в проводнике. На картинке 3-е окно сверху слева. Понятно, что рисовать через API я уже не прошу/не предлагаю, с учетом уже осознанного это неправильно. Ну по существу, не все там у меня в комбобоксе "засунуто" корректно, но Communications Media Help Default + его производные это уже сильно больше чем ничего. 2. Как следует из описания классов http://ukintel.deviantart.com/art/Vista-Visual-Style-Classes-87482323 стили якобы можно применять не обязательно к Rebar, но также и к самому Toolbar. Код: plaintext 1.
Код: plaintext
Сомневаюсь что к убожеству можно пытаться применять стили. Т.е. нужно мне нарисовать просто API Тулбар на форме (без Rebar) и с ним поэкспериментировать со стилями, как нарисовать не знаю. 3.Есть предположение, что все же м.б. можно применить стили и к VB-Toolbar тоже. Было бы неплохо. Следуя наблюдениям, могу предположить, что надо сабклассить VB-Toolbar и глушить какие-нибудь сообщения, по аналогии как это делается при применении API-ImageList к VB-TreeView. Есть ли соображения какие именно Msg надо убивать? Или все-таки настаиваете что БенедиктДмитрий773) С VB тулбаром все эти фокусы сделать нельзя?У него несистемный (=недокументированный на уровне системных, и неразвиваемый) класс окна. C ListView/TreeView же с этим проблем как выяснилось вообще никаких... В принципе, конечно, думаю и API-Toolbar+API-Rebar сгодится, и это правильно, и у меня почти все готово чтобы его воткнуть в рабочее приложение, по крайней мере чтоб он там "красиво сидел/перерисовывался". Естественно придется дорабатывать/изучать все процедуры/коды с ним связанные и т.п. но это уже детали, думаю осилится. Но все же хорошо такую возможнось с VB-Toolbar иметь, если оно в принципе достижимо . Например что касается API-Rebar/VB-Coolbar то разницы вообще никакой, т.е. стили к CoolBar применяются также хорошо. Здесь я конечно склоняюсь в пользу API-Rebar, ибо создать его не тяжело и не надо тащить (+ регистрировать) лишнюю библиотеку, а Control-5 и так тащатся за прогой, видимо это судьба. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2010, 15:53 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77БенедиктПо границе и размерам для "классики" в приложении. Да, спасибо, суть понял. Код: plaintext
Бенедикт, Sorry, не доглядел. Там этим далеко не ограничивается, в смысле не так все просто. Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2010, 17:57 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Не очень нравится, что на XP стиле получается... Т.е. эдакий выпуклый ребар, как бы задвигающий собой меню, кот. к ребар отношения не имеет. Красиво (и стандартно для классики и для XP-стиля ), когда классическая горизонтальная полоса между меню и тулбар/ребар. Т.е. хочется как на нижней картинке (снизу и по краям тулбара полосы нет). Для vb-тулбара эта полоса рисуется автоматически. Для конструкции Toolbar в Rebar можно конечно не применять Or CCS_NODIVIDER для ToolbarStyle, т.е. для самого Toolbar, но в этом случае полоса будет обрезана по краям, т.к. относится к Toolbar а не к ребар, а на XP-стиле еще и наложится на выпуклость. Допускаю что это нерешаемо. Дело в том что если меню тоже находится внутри ребар, то эта полоса будет называться RBS_BANDBORDERS, т.е. делитель бандов. Но в моем случае используется обычное vb-меню. Т.е. если сформулировать: 1) Как убрать выпуклость (на xp-стиле) 2) Как сделать горизонт. полосу только сверху.(на классике и на XP). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2010, 18:05 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий772. Как следует из описания классов http://ukintel.deviantart.com/art/Vista-Visual-Style-Classes-87482323 стили якобы можно применять не обязательно к Rebar, но также и к самому Toolbar. Код: vbnet 1. 2.
Естественно начал пытаться с Вашим же примером (т.е. с API-Toolbar) типа в лоб. Кстати выяснил в чем фишка. Градиентная подложка определяется ребаром. А вот если на кнопках есть еще и надписи: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
, то они по умолчанию будут черными и обычными (это на тематическом темно-синем градиентном фоне) Поэтому стиль надо применять еще и к самому Тулбар: Код: vbnet 1. 2. 3.
Тогда надписи станут "стильными", в данном примере белыми. Просто до сих пор одни картинки в кнопках использовал. Намучился кстати с этими надписями. Еле утряс эти стили, TBSTYLE_LIST, BTNS_AUTOSIZE и TB_SETMETRICS в правильной последовательности. Меняешь стиль, высота прыгает и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2013, 05:46 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77Намучился кстати с этими надписями. Еле утряс эти стили, TBSTYLE_LIST, BTNS_AUTOSIZE и TB_SETMETRICS в правильной последовательности. Меняешь стиль, высота прыгает и т.п.Да-да, тулбар на редкость придирчив при стилизации кнопок, тоже долго мучился пока не отловил нужную комбинацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2013, 10:01 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий771. Среди всех стилей ...нет основного, мутно-зеленого градиента, кот. Виста использует в проводнике. Ну нету его здесь: http://ukintel.deviantart.com/art/Vista-Visual-Style-Classes-87482323 Не может такого быть чтоб не было. Допустим я могу вытащить hTheme = GetWindowTheme(g_hwndRebar) Но сразу 3 вопроса: 1) Как мне натравить эту ф-цию на окно проводника (в Висте) - как узнать g_hwndRebar этого ребара. 2) Допустим узнал. Что мне делать дальше с HTHEME Скорее всего что-то связанное с: этими ф-циями 3) и допустим если я нашел ЭТО, то как применить к своему rebar Угадать-то надо всего одно слово. М.б. оно не в aero.msstyle, а в каком другом месте. Spy++ даже никаких намеков не дает, ну м.б. поможет найти g_hwndRebar. Бесит меня этот вопрос. Есть идеи (кроме рисования подложек)? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2013, 11:09 |
|
|
start [/forum/topic.php?fid=60&msg=38221206&tid=2157041]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
152ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 521ms |
0 / 0 |