|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
Имеем: Picturebox с градиентной заливкой, не суть, там может быть картина Репина. Поверх находится обычная кнопка. На классике нормально (сверху) , на XP и Виста стилях см.ниже(манифесты естественно включены, кнопка должна быть "стильной", поэтому тему не отключаем) вокруг кнопки обрамление в виде "белой рамки". Цвет обрамления можно поменять с BackColor=ButtonFace на любой другой, но получается еще большая фигня. "Графический стиль" точно не катит с включенными темами, будет еще хуже. Т.е. вопрос как сделать кнопку без "квадрата кот. вокруг"? Custom-кнопки не годятся, ибо стили будут нарушены. В случае Висты конечно можно нарисовать тематический тулбар скажем Communication, /topic/754298&pg=2&hl=toolbar vista но это слишком неоправданная работа для одной кнопки, и потом это не прокатит на XP-стиле. В принципе может быть принудительно придумать/найти custom-кнопку как на Виста тулбаре с градиентом и белым шрифтом независимо от темы...? Т.е. надо что-то потребное придумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2010, 18:01 |
|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
БенедиктПо кнопке ничего не скажу...Попробуйте посмотреть, будет ли тот же эффект, если кнопку создавать через CreateWindowEx(). Пока не пробовал но скорее всего чуть-чуть границы прямоугольной рамки сгладятся. БенедиктОчевидность подсказывает: если где видите хорошую, годную кнопку, натравите на неё Spy++. Вдруг что найдётся. Копания просто в Control Spy ничего не дали. Если только WS_EX_DLGMODALFRAME попробовать, так сказать в рамку пошире ее посадить, да и то сомневаюсь. А не вижу я нигде хорошей годной. В висте везде тулбары, но чего-то я не видел окно About с тулбаром. Microsoft всегда делает родной фон под кнопкой в своих About. Тулбар ради одной кнопки, да еще со сносом влево, не годится... Кто-то закрывает About по щелчке на форме, но у меня это чтоб ее двигать, да и не нравится. Из известных проложений About Adobe Reader -ну так там заметно. Во первых красный фон не очень градиентный, ну фон кнопки красный, но все равно оно себя выдает и это видно. Кнопки самоделки в глаза очень бросаются. Они хоть и без контуров, но их собственная топорность это еще хуже. Ну т.е. идей пока нет, кроме как попробовать чуть сгладить углы, создав через API и чуть поиграться "фоном", по крайней мере верхнюю полосу так можно "почти убрать", внизу полностью не уберешь, это "типа тень". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2010, 10:57 |
|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
Значит так. Создал я кнопку через API и понял что от VB она ничем не отличается. Но есть одно но: Есть у кнопки свойство Command.BackColor При создании через API,т.е. Код: vbnet 1.
ему автоматически присваивается значение Родитель.BackColor, т.е. Код: vbnet 1.
, т.е. она старается адаптироваться к фону, но не к картинке (если есть Picture1.Picture). При этом этот BacColor как раз в случае тематическизх кнопок XP/Vista всплывает и не перерисовываеся темой как ни странно. Поэтому в упрощенном варианте просто ставим в конструкторе VB Код: vbnet 1.
и получаем тек. версию кнопки (изображено на картинке) На XP получается весьма неплохо. Нижняя и правая белые полосы это "тематическая тень" и эта тень прикрывает фон снизу, где он не соответствует подложке, ибо цвет брали сверху. Но вот на Висте ситуация хуже. Там "теней" нет, и фон выглядывает по краям, и внизу (это особенно заметно) на целых 2 пикселя. Можно конечно привязаться к нижнему цвету, но думаю полоса 1 пиксель сверху будет заметна. Т.е. идеи тут может быть 2: 1) Сделать Command1.BackColor = прозрачный. 2) Установить картинку на BackGround. Картинку создавать функциями семейства CreateGradientBackground "от Бенедикта" по цветам в крайних точках. Ну, в более общем варианте: спроецировать то что под кнопкой на Background кнопки. Если что-то из этого удастся, то все будет "по стандарту", а "тематика" нарисуется сверху все равно сама. Гы...вопрос только как это сделать, свойства BackgroundPicture у кнопки нет (Picture есть но это не то), hdc у ней тоже нет. Пробовал вот это, по идее шанс был, что именно для кнопки сработает: Change your Toolbar Background (Color or Picture) Код: vbnet 1. 2.
но не прокатило. Т.е. даже не знаю как сделать монотонный Command1.BackColor=ЦВЕТ но через API (при создании через API цвет как упомянул устанавливается автоматически как у родителя) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2010, 09:54 |
|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
В общем, облогородил, как смог. Лучше уже не получится. Достойный пример нашелся на C++, пришлось попотеть над переводом. Windows controls with transparent backgound Но оно себя оправдало на все дальнейшие случаи жизни. Основная идея что Pattern Brash, который является background кнопки подменяется куском картинки родительского контрола, что лежит под ним, т.е. надо вырезать этот кусочек и подложить под кнопку. Суть такова: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Полностью готовый тест во вложении, картинка ниже. Заодно нашел несколько стилевых кнопок для Висты (и для 7 надо думать). Кнопка "СТАРТ" в 3-х ракурсах (редко-уродливое исполнение однако) и стрелки вправо-влево (также доступны для вызова из XP-стиля). Вот для прозрачности энтих без фона уже точно не обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2010, 06:24 |
|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
Полностью прозрачные кнопки есть на семерке: Код: plaintext 1.
Кнопка "Start" для XP рисуется так: Код: plaintext
На семерке правда не знаю как кнопку "Start" достать. В общем это в ресурсах .msstyle надо копаться хексом и искать методом тыка, там думаю много чего еще есть, главное знать название органа и имя класса, а тематизируется все одним пинком. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2010, 12:57 |
|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
Дмитрий77Полностью прозрачные кнопки есть на семерке: Код: vbnet 1. 2.
Кнопка "Start" для XP рисуется так: Код: vbnet 1.
с надписью только чего-то не то по умолчанию На семерке правда не знаю как кнопку "Start" достать. В общем это в ресурсах .msstyle надо копаться хексом и искать методом тыка, там думаю много чего еще есть, главное знать название органа и имя класса, а тематизируется все одним пинком. Странно, файл expstyle.exe - запускается и отображается так как показано на картинке, а проект expstyle.vbp запускается так: ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2012, 02:37 |
|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
Сорри, не просмотрел картинку, перед тем как загрузить.. Оутпост к делу никакого отношения не имеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2012, 02:39 |
|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
donpaulsСтранно, файл expstyle.exe - запускается и отображается так как показано на картинке, а проект expstyle.vbp запускается так: А чего странного? В VB среде у вас по определению классика (а для классики эффекта не будет), Vista/XP стиль получается за счет файла манифеста, все эфффекты работают именно на "стилях". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2012, 04:12 |
|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
Дмитрий77donpaulsСтранно, файл expstyle.exe - запускается и отображается так как показано на картинке, а проект expstyle.vbp запускается так: А чего странного? В VB среде у вас по определению классика (а для классики эффекта не будет), Vista/XP стиль получается за счет файла манифеста, все эфффекты работают именно на "стилях". А как комплировать проект, чтобы получить данный эффект? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2012, 17:46 |
|
Как облагородить кнопку которая поверх картинки?
|
|||
---|---|---|---|
#18+
donpaulsА как комплировать проект, чтобы получить данный эффект? Обычным образом. Манифест должен либо лежать отдельным файлом в папке с exe (он там есть) -простейший вариант, либо добавлен в ресурсы exe-шника, ну поиск то сделайте, я наверняка выкладывал какие-то проекты с внедренным манифестом. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2012, 19:40 |
|
|
start [/forum/topic.php?fid=60&fpage=75&tid=2157648]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 299ms |
total: | 452ms |
0 / 0 |