|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Задача простая. Есть прямоугольник (picturebox, label), не суть. У него есть свойство background. Например я хочу сделать ему горизонтальный градиент в стиле Виста (что-й то типа мутно зеленого, в направлении фиолетового). Ну т.е. 1) как сделать градиент по горизонтали (вертикали) 2) Ну и какие цвета закладывать под Висту(если кто просто знает) Ну а на прямоуг. например наложить картинку, текст и т.п., Transparent Control Antonary вроде как любезно предоставил. Пример где полезно: окно About. Задача посложнее: Подложка под Toolbar: градиент по вертикали, темно синий или мутно зеленый с преломлением посредине. По идее накопал слово ToolStrip и вот энтот example http://www.vbforums.com/showthread.php?t=547618 но думается что ToolStrip это vb.net-наворот, и наверняка можно заказать этот стиль Toolbar-у через API, без ручной рисовки т.е. Хотелось бы каких-то идей-направлений (хотя бы). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 03:23 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
если "Toolbar" - это PictureBox, то тогда всё просто: Код: plaintext 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 11:52 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77Хотелось бы каких-то идей-направлений (хотя бы).NM_CUSTOMDRAW ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 12:37 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Konst_One, за код спасибо, в принципе вчера уже находил нечто подобное. Gradient Picture1, 7226628, 7698196, 0 'фон Gradient Picture3, 28663, 53757, 0 'оранжевая полоска под фоном рисует например чего хочу(для определения крайних цветов взял первую попавшуюся утилиту) Но я взял другое решение. Он градиент рисует за ощутимое время, + еще этот контрол прозрачности (не всегда как хотелось бы срабатывает). Да еще и надо перерисовывать по _paint, чтоб не стиралось И еще непонятно как это грузит систему... Проще один раз в тестовом приложении нарисовать желаемое, сделать PrintScreen и сохранить в Bitmap, а Bitmap доставать из ресурсов и показывать (если конечно нет желания чтоб полоска под фоном переливалась цветами). Для About достаточно (лишних 100кб размера exe не особо жалко). С Toolbar конечно надо повозиться. В принципе гамму цветов можно взять из приведенного мной в начале примера. NM_CUSTOMDRAW что делает? Вообще виста думаю должна автоматически это дело подкладывать, если оно заказано. Еще м.б. интересен вопрос прозрачности формы. Как целиком сделать я нашел, но тот код делает прозрачной ее целиком + все элементы на ней. А интересно: только какую-то область формы и только подложку (без скажем кнопки, что на ней нарисована.) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 16:54 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
разбирайся: ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 16:59 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Konst_One, разбираться с чем? вижу кнопку, нажал-растворилась..прикольно. О! Label оказывается может иметь BackStyle=Transparent без всяких контролов. Не обращал внимания. Пустячок, а приятно. Только какое это имеет отношение к Вистовскому Toolbar? По идее он на Висте прозрачный(манифест думаю обеспечивает прозрачность). Можно попробовать подложить под него Picturebox(ну извращаться конечно: Toolbar, в него PictureBox, внутрь еще Toolbar), a Picturebox раскрасить градиентом, ну хоть вашу ф-цию взять чуть рихтануть чтоб с середины высоты градиент шел в обратку...etc ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2010, 19:25 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Глухо пока... Пример (очень простой) грамотной подкладки картинки под Toolbar я нашел. http://www.vbforums.com/showthread.php?t=381167 Но беда в том что он не работает со стилями (т.е. либо не должно быть манифеста, либо XP классика, либо отменяем темы). Вот например человек мучился, и его "озарило". http://www.codeproject.com/answers/44511/Changing-Background-colour-of-Toolbar-with-Vista-D.aspx Только в баню такой тулбар нужен с 98-ми кнопками пусть даже и на фоне эмблемы win7. Гм, а может тему "explorer" ему тупо забабахать.... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 00:04 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Решение то в общем прозрачно: To create a transparent toolbar, all you need to do is add TBSTYLE_FLAT or TBSTYLE_TRANSPARENT to the window style parameter of CreateWindowEx. Там и картинка приводится: http://msdn.microsoft.com/en-us/library/bb760443(v=VS.85).aspx С оговоркой правда: To prevent repainting problems, this style should be set before the toolbar control becomes visible. Казалось бы Код: plaintext 1. 2. 3. 4.
Видимо ocx производит какие-то repainting problems. Когда возился с VB-treeview, пришлось подыграть начальными установками чтоб добиться применения доп.стилей как хотел. Здесь видимо аналогично. Не уверен что хочу API-тулбар, но взглянуть взглянул бы. CreateWindowEx или CreateToolbarEx примеров на vb простых не нашел. Здесь есть http://msdn.microsoft.com/en-us/library/bb760446(v=VS.85).aspx но это надо напрягаться, хотелось бы что то простое именно на VB (хочу увидеть TBSTYLE_TRANSPARENT). Но именно простое а не собрание сочинений VB-автора в 40томах (читай user-control-ах и т.п.) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 03:23 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
вот когда то давно по чужому примеру допиливал свой тулбар, есть кое какие баги конечно, но может что-то и пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 11:50 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Konst_One, ну, ругается на kpToolbar.ocx, вроде как ее скомпилировал и зарегистрировал, но все равно не работает, даже чтоб посмотреть, неохота изучать собрание сочинений. Я тут все же рискнул "перевести" (в смысле самостоятельно, без примеров ибо не нашел достойных) microsoft-овский код с CreateWindowEx в лоб что называется. Код: plaintext 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164.
Что могу сказать, TBSTYLE_TRANSPARENT срабатывает- в среде VB. сама Форма под тулбар прозрачная, могу сквозь Toolbar читать текст программы (при старте). Но потом он не перерисовывается, т.е. захватывает изображение под формой (а не фон формы) первого момента. А с манифестом вне vb я Toolbar вообще не вижу. Вообще конечно в идеале надо заставить TBSTYLE_TRANSPARENT работать под vb(ocx) Toolbar-ом. В крайнем случае Rebar API-шный с картинкой под него подложить. Нет идей как это сделать (TBSTYLE_TRANSPARENT with ocx control-5 Toolbar)? Честно склоняюсь к мысли пока на все это вообще забить, через API целиком делать сильно неохота, то что накатал это очевидно только начало причем сильно сырое. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 12:53 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
да, это явно только начало. я кинул пример тулбара, там рисование чистое на hDC происходит. чтоб скомпилилось надо совместимость в проекте убрать, сам ocx не стал кидать из-за размера. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 12:57 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Сделать глючно-прозрачным мне OCX-тулбар все же удалось. ' Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Фишка в методе и в &H8000 '& без & на конце (другая константа) Но это ровным счетом ничего не дает. Дает снимок экрана при запуске в области Toolbar. По сравнению с API-"методом" дает еще недоступность кнопок: при нажатии звук предупреждения в динамик, как будто форма под msgbox. На XP/Vista-стиле появляются еще странные крестики "закрытия формы" в правой части "тулбара" Глючное сие произведение действит. вызывается только лишь если применять все до момента Visible, хоть в чем то Microsoft не обманул. А как вообще в Висте тулбар устроен? Ощущение, что это вообще не он. Там Rebar я так понимаю, Rebar раскрашен в градиент и на него накидано куча прозрачных кнопочек с менюшками. М б это вообще не тулбар и не туда копаю, потому как если нечто умеет что-то то это можно выжать, а если не умеет то это выжать нельзя. Если в висте так все приложения и делают, значит так и надо сделать, но хотелось бы это понять. Всякие пользовательские наляпки честно не очень интересуют, хотелось бы делать так как делает система, ибо наляпка обычно хорошо "ляпает" при смене стиля или OS. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 23:47 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
там вообще не ActiveX (не контрол), там все рисуется методами API ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2010, 11:27 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Konst_One, я понимаю что винды все рисуют через API а не через (ms)comctl(32).ocx Там Toolbar? (т.е. в висте, характерных примеров не так много кстати: сам Explorer-зеленый градиент, Почта Windows и Fax and Scan- синий градиент) т.е. вот ЭТО: http://msdn.microsoft.com/en-us/library/bb760435(v=VS.85).aspx Или там вообще не ЕТО. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2010, 15:53 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
скриншот выложи и обведи что ты считаешь тулбаров в виндоусе и что ты хочешь от него ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2010, 15:56 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
хотя можешь не выкладывть. просто Spy++ запусти и сам проверь. вот и узнаешь что там за классы окон микрософт юзает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2010, 16:10 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
а если есть желание порыться в контролах, то вот сюда глянь (Control Spy v2.0) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2010, 16:14 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Konst_Oneа если есть желание порыться в контролах, то вот сюда глянь (Control Spy v2.0) Ну.... в энтом Spy Toolbar на черном фоне красиво выглядит, прям то что надо. Но вот пытаюсь применить в лоб эти стили, кот. якобы соответствуют тому красивому что Microsoft в Spy рисует: Хоть к API Toolbar-у Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Хоть к VB-Toolbar-у Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
и ничего нового кроме описанных мной выше глюков не наблюдаю. Мож чего недопонял? А примеров на сию тему...нема. Видимо не я один "недопонял". Потому как если то чего изображено в SPY реализуемо, то Тулбар просто пихается в API-Rebar (а в примитивном варианте можно и в Coolbar из 6-х контролов), и задача решается. Вопрос тогда в том как изобразить то что изображает Microsoft в Spy под словом Toolbar по умолчанию (фон формы можно сделать в Spy черным, чтоб понять о чем речь). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2010, 13:35 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77, с картинками стало понятнее, но они не отвечают на два ключевых вопроса: 1) какого класса эти окна (мало ли, это самодеятельность какого-нибудь MsoCommandBar или другого несистемного класса) и 2) является ли их закраска тематической. Воспользуйтесь Spy++ и Theme Explorer или аналогами. Кстати, Spy++ (отчасти) открыл бы Вам, что я "повёлся" на Ваше пожелание "доработать" VB-шный Coolbar вставкой в него системного Toolbar (может, напрасно). А добавить любой битмап (в том числе формируемый на лету градиентный) в качестве подложки несложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2010, 16:02 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Бенедикт, от радости воочию увиденного того, что казалось уже не возможным я даже ничего сразу и не отписал. Сейчас собираюсь вникать, вчера смотрел поверхностно, но сразу возникли себе на уме вопросы: 1) Кулбар вообще обязателен? Лишний контрол+таки лишняя OCX... 2) Мне не удалось убрать "пустую" панель, если ее вычеркнуть в конструкторе, то вообще ничего не отображается. А из кода через Remove почему-то с ходу не вышло. 3) С VB тулбаром все эти фокусы сделать нельзя? Бенедикт2) является ли их закраска тематической. Воспользуйтесь Spy++ и Theme Explorer или аналогами. а ControlSpyV6 и spy++ это не тоже самое? Theme Explorer Theme Explorer я что-то не очень понял. Что они мне дадут? 1) Я должен при помощи этих прог подобрать стиль того чего я хочу методом тыка? 2) Или они мне разложат по косточкам имеющуюся прогу типа Windows Mail и опишут из чего там сделан этот Тулбар? Первое кажется более реальным, но с ControlSpyV6 только удалось узреть прозрачный тулбар с черной подложкой. Если второе, то Шариков не догоняет как это делается. БенедиктКстати, Spy++ (отчасти) открыл бы Вам, что я "повёлся" на Ваше пожелание "доработать" VB-шный Coolbar вставкой в него системного Toolbar (может, напрасно). Это было не желание, это было высказано от безысходности. Это кстати я и так догадался, когда у меня Vista OCX затребовала. (Я намеренно не пускаю в смысле не устанавливаю VB на тестовые системы). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2010, 18:23 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий771) Кулбар вообще обязателен? Лишний контрол+таки лишняя OCX... Без него не получается, может ребар через API. Но такое ощущение, что он хоть и версии 6, но в отличии от всех остальных контролов-6 темы то поддерживает (полоска или точки в заголовках панелей) Дмитрий772) Мне не удалось убрать "пустую" панель, если ее вычеркнуть в конструкторе, то вообще ничего не отображается. А из кода через Remove почему-то с ходу не вышло. Конфликт API и VB. Убрать ее по-простому нельзя. Но можно сделать visible=false и требуемый эффект "одинокого тулбар" будет достигнут. Т.к. высота при этом заметно уменьшается, то таки-зазора между кнопками и краями воспользовался Dim rbBand As REBARBANDINFO With rbBand ... .fStyle = RBBS_NOVERT Or RBBS_CHILDEDGE Дмитрий773) С VB тулбаром все эти фокусы сделать нельзя?. Чет не получается. Но и раньше не получалось. Но конечно вопросов море задаю... При данном стиле высоту-ширину кнопок лучше увеличивать (как вариант вытянутые по вертикали) Экспереминтируем... Код: plaintext 1. 2. 3. 4.
По ширине растягивается, по высоте не хочет. По другому: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Но высота самого Тулбар при этом не увеличивается, кнопки срезаются снизу. По другому: Код: plaintext
Какие-то нелинейные зависимости... ================================== Цветность иконок в Тулбар. Не могу понять как приложения их "рисуют красиво". Не далее как вчера копал эту тему, пришел к выводу, что 24-х битных битмап для Тулбара достаточно, для Listview-Treeview я сейчас использую 32-бит иконки с прозрачными тенями... (дублирую и заменяю bat-файлом в готовом exe) Проблема в чем. Честно тырятся ресурсы из стандартных прог. Причем Win прога берет их очевидно из bimap. Это очевидно потому что я не сумел найти иконки с альфа-каналом картинок требуемого вида, как не искал. Может какая-то хитрая обработка через gdi делается? в смысле тени/прозрачность как-то кодируются в битмапах(каким то цветом, не маск color а что-то другое) и на ходу преобразовываются? Элементарный пример: знак вопроса в кружочке(конкретно эту можно найти с тенями, просто пример хорошо описывается). На 24bit края кружочка получаются рваные, на темно-синем фоне это заметно. На стандарном серо-белесо-желтоватом это прокатывало. Т.е. даж не знаю как быть. Если картинка очень стандартная, то иконку найти можно, если не очень, то только битмап-24, и он выглядет иногда таки не на уровне, как в примере со знаком вопроса. Я закрашиваю фон в синий и делаю ImageList по принципу Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 03:39 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77Дмитрий771) Кулбар вообще обязателен? Лишний контрол+таки лишняя OCX...Без него не получается, может ребар через API. Ну это как раз оказалось относит. несложно: Код: plaintext 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
К ним добавился вопрос про vbAlignTop применительно к API-rebar.(приведенный код это не обеспечивает) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 04:47 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий77Цветность иконок в Тулбар. Не могу понять как приложения их "рисуют красиво". Не далее как вчера копал эту тему, пришел к выводу, что 24-х битных битмап для Тулбара достаточно, для Listview-Treeview я сейчас использую 32-бит иконки с прозрачными тенями... (дублирую и заменяю bat-файлом в готовом exe) Проблема в чем. Честно тырятся ресурсы из стандартных прог. Причем Win прога берет их очевидно из bimap. Это очевидно потому что я не сумел найти иконки с альфа-каналом картинок требуемого вида, как не искал. Может какая-то хитрая обработка через gdi делается? в смысле тени/прозрачность как-то кодируются в битмапах(каким то цветом, не маск color а что-то другое) и на ходу преобразовываются? Элементарный пример: знак вопроса в кружочке(конкретно эту можно найти с тенями, просто пример хорошо описывается). На 24bit края кружочка получаются рваные, на темно-синем фоне это заметно. На стандарном серо-белесо-желтоватом это прокатывало. Т.е. даж не знаю как быть. Если картинка очень стандартная, то иконку найти можно, если не очень, то только битмап-24, и он выглядет иногда таки не на уровне, как в примере со знаком вопроса.... Похоже придется искать/дорисовывать прозрачность 32bit, иначе все плохо. Проблема только в долгом времени рисовки/отработки каждой картинки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2010, 16:14 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
Дмитрий771) Кулбар вообще обязателен?По крайней мере для отображения gripper ("полоска или точки в заголовках панелей") - да. Впрочем, это, наверное, меньшая из причин.Дмитрий77Лишний контрол+таки лишняя OCX...Рано думать об оптимизации.Дмитрий772) Мне не удалось убрать "пустую" панель, если ее вычеркнуть в конструкторе, то вообще ничего не отображается. А из кода через Remove почему-то с ходу не вышло.Вроде, решено?Дмитрий773) С VB тулбаром все эти фокусы сделать нельзя?У него несистемный (=недокументированный на уровне системных, и неразвиваемый) класс окна.Дмитрий77а ControlSpyV6 и spy++ это не тоже самое?Нет. Spy++ - утилита из MS Visual Studio, у Borland такая называлась WinSight32, есть ещё аналоги. Позволяет увидеть иерархический список окон, их стили, сообщения и т. п. Must have программа для "подглядывания" за строением окон.Дмитрий771) Я должен при помощи этих прог подобрать стиль того чего я хочу методом тыка?Отчасти, относительно Theme Explorer. Надо понять, является ли такая заливка тематической (системной на уровне залогиненного пользователя), и, если да, каковы параметры, которые надо передавать тематическим API. Либо это рюшечки и бантики в конкретном оконном классе, не имеющие настроек на уровне системы.Дмитрий772) Или они мне разложат по косточкам имеющуюся прогу типа Windows Mail и опишут из чего там сделан этот Тулбар?Да, Spy++.Дмитрий77Первое кажется более реальным, но с ControlSpyV6 только удалось узреть прозрачный тулбар с черной подложкой.Ну, под него ж битмап не подкладывают.Дмитрий77Если второе, то Шариков не догоняет как это делается.Коль Полиграф Полиграфыч сам догнал про АБЫРВАЛГ, догонит и про обращение со Spy++ :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 01:07 |
|
Градиенты в Vista стиле, и в частности подложка под Toolbar.
|
|||
---|---|---|---|
#18+
По высоте-ширине кнопок: Код: plaintext 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. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2010, 01:51 |
|
Градиенты в 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?all=1&fid=60&tid=2157041]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 151ms |
0 / 0 |