Здравствуйте, Carc, Вы писали:
AG>>У меня оффлайновый MSDN April 2007, в котором этого рефакторинга нет (включая упоминания Win98), и там для этого сообщения указана Windows XP. (Но да, нужен Common Controls 6.0) C>Он-на ка-а-ак (ц)… А если Visual Styles вообще отключены пользователям, тогда как быть? Я несколько раз просил отскриншотится о проблемах своих пользователей. И хотя я точно знаю что у них Виста\7+, то частенько вижу как раз пейзаж отключенных стилей. Гуй в стиле Win2K… Ну есть фанаты\или требования какие — вот отключают стили в винде напрочь.
У меня ровно наоборот, никогда в скринах классику не видел Интересный момент.
C>И как тогда быть?!?! В общем, в своих случаях я делал иначе: Субкласс\ИлиСуперКласс кнопки + перехват WM_PAINT + отрисовка по умолчанию, а уж затем свои раскраски добавлять.
По-хорошему, надо делать разбор ситуации. Я у себя проверял версию винды, плюс включены-выключены стили, и в зависимости от этого рисовал что-то своё в каждом случае.
Конкретно сабкласс кнопки на 7+dwm приведёт к тому, что при наведении мышки винда будет пытаться рисовать свою анимацию, а сабкласс будет ловить события WM_PAINT после анимации и рисовать своё — в случае или своего бака или бака у иконки будет мельтешение в кнопке.
По теме: я бы открыл картинку в редакторе и сделал 32-битную с альфой, потом BM_SETIMAGE (я так всегда делаю)
C>>>И как тогда быть?!?! В общем, в своих случаях я делал иначе: Субкласс\ИлиСуперКласс кнопки + перехват WM_PAINT + отрисовка по умолчанию, а уж затем свои раскраски добавлять.
Скрытый текст
CEM>>По-хорошему, надо делать разбор ситуации. Я у себя проверял версию винды, плюс включены-выключены стили, и в зависимости от этого рисовал что-то своё в каждом случае. CEM>>Конкретно сабкласс кнопки на 7+dwm приведёт к тому, что при наведении мышки винда будет пытаться рисовать свою анимацию, а сабкласс будет ловить события WM_PAINT после анимации и рисовать своё — в случае или своего бака или бака у иконки будет мельтешение в кнопке.
CEM>>По теме: я бы открыл картинку в редакторе и сделал 32-битную с альфой, потом BM_SETIMAGE (я так всегда делаю) C>У меня там простенькая графика. Вроде стрелки влево\вниз где-нить на кнопочке. Городить из-за этого ресурс в каждом проекте, чтобы только его нарисовать на кнопке смысла мало. А так все банально: отрисовались по дефолту, а потом исключительно в клиентской области дорисовывается эта стрелочка. В общем, у меня там бликерить просто нечему. Разве что это ручками нарисованная стрелка "живая" — реагирует когда мыша над ней, и когда уходит.
Не, секунду. Если у тебя просто кнопка, и ты в WM_PAINT туда что-то рисуешь, при этом Aero включен, то будет следующее:
— когда мышь попадает в область кнопки, кнопка начинает "наполняться" синеньким (по таймеру). В этот момент в кнопку летит несколько WM_PAINT-ов без стирания/заливки бакграунда. Если у тебя стрелка без антиалайзинга — всё ок, ничего заметно не будет. А вот в случае альфы, это сразу станет видно Альфа на альфу накладывается. Вот если с этим начать бороться через затирание/перерисовку бака — начнёт слетать синева. Точнее бликать будет.
И если у тебя кнопка, то ты точно должен был ещё наступить на WinAPI-грабли про всякие нажатия кнопки с клавиатуры/мыши, EnableWindow и ещё что-то было, не помню — все эти вещи в user32.dll идут напрямую в Draw-фукцию кнопки, не используя wm_paint. Природа этих граблей в оптимизации, но это доставило кучу хлопот скиннерам Ну, мне, по крайней мере Знаю людей(чёртовы stardock-и), которые как-то умудрялись находить адрес внутренней функции перерисовки и делать перехват именно её. Хотя эта xxxDraw наружу никак не торчит. Я в таких случаях писал примитивный ИИ, который разбирал асм-овый код, искал адрес вызываемой функции в коде и переписывал её. Но, блин, это очень неправильно и рискованно. А как делали эти гады, даже не знаю железно прошивать нельзя, на версию винды/сервиспака затачиваться нельзя, а версий dll-ки может быть несколько, и выйти новая с новыми адресами может в любой момент, и тогда софту капец... C>Короче говоря, простенькая такая приблуда, чтобы сделать кнопку в стиле "Кнопка + Доп. варианты" (щелкнули по стрелке, какой-то как правило выбор предоставляется: менюшка там аль еще какая ересь). Делов-то минут на 30 со всеми красотами и проверками. А главное, никаких внешних (для кода кнопки) ресурсов. Вещь полностью в себе. Соответственно, и проверять нечего кочуя из проекта в проект. Разве что все руки не дойдут на переписать в WinAPI-like стиле, чтобы не поддерживать несколько версий (WTL, MFC и прочия).
Здравствуйте, Carc, Вы писали:
AG>>Убрать BS_OWNERDRAW, AG>>обрабатывать NM_CUSTOMDRAW: при CDDS_PREPAINT возвращать CDRF_NOTIFYPOSTPAINT, при CDDS_POSTPAINT — рисовать свой битмап.
C>А разве Custom Draw для кнопок поддерживается?
Здравствуйте, Carc, Вы писали:
C>А-а-а-а, виста унд выше… Тогда понятно, откуда у меня ощущение что "не-а, не поддерживается". По старинке многое писалось и тестилось на ХП…
Та не. Они просто из всей документации по мере правок удаляют старые версии Windows.
Опа, BN_CLICKED тоже типа только во времена Висты изобрели
У меня оффлайновый MSDN April 2007, в котором этого рефакторинга нет (включая упоминания Win98), и там для этого сообщения указана Windows XP. (Но да, нужен Common Controls 6.0)
Здравствуйте, CEMb, Вы писали:
CEM>По теме: я бы открыл картинку в редакторе и сделал 32-битную с альфой, потом BM_SETIMAGE (я так всегда делаю)
Это не наш метод
Если серьезно, уже сложилось исторически, что все картинки у нас (в нашем проекте) обычный 24-битный BMP.
В принципе, сейчас первый раз столкнулся с проблемой вывода картинки — все остальное выводится без проблем.
P.S.: Короче, выкрутился через ImageList. Добавляю туда BMP-шку с маской RGB(255, 0, 255), а в WM_DRAWITEM дергаю
ImageList_GetIcon(..., ILD_TRANSPARENT) и скармливаю полученный хендл функции DrawState. В итоге корректно выводится
и штатная картинка, и задизейбленая.
Здравствуйте, Alexander G, Вы писали:
AG>BS_SPLITBUTTON, что ли? А зачем её самому рисовать?
Угу, она самая. Но насколько я помню, BS_SPLITBUTTON поддерживается начиная с Висты. В ХП это не сработает. У меня эксперименты ручками именно в ХП ничего не дали в свое время.
Так что пришлось сделать ручками.
PS хозяйке на заметку: неспроста между прочим Microsoft почесала репу и после последних событий выпустила секурные патчи и для ХП тоже.
Это к вопросу, кто сидит на ХП. Не думаю, что они о хомячках заботились…
День добрый!
Столкнулся сейчас с задачей вывода кнопки с картинкой. В принципе, все понятно, только есть одно НО (точнее, два):
1. Картинка представляет собой BMP файл, за цвет фона принимается RGB(255, 0, 255). Поскольку в нормальном случае
DrawState выводит ее "как есть", используем TransparentBlt с нашим цветом прозрачности.
2. При выводе той же картинки через DrawState с флагом DSS_DISABLED, получаем на выходе серый прямоугольник, что не есть красиво.
Собственно, вопрос: можно-ли как-нибудь указать DrawState прозрачный цвет, или на основании имеющейся картинки
создать приемлемую для DrawState (или иной функции вывода) ?
Здравствуйте, Vaynamond, Вы писали:
V>1. Картинка представляет собой BMP файл, за цвет фона принимается RGB(255, 0, 255). Поскольку в нормальном случае V>DrawState выводит ее "как есть", используем TransparentBlt с нашим цветом прозрачности.
Нужно такую дырку, чтобы были видны контролы под кнопкой? Или просто заменить прозрачный цвет на фон окна текущей темы?
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, Vaynamond, Вы писали:
V>>1. Картинка представляет собой BMP файл, за цвет фона принимается RGB(255, 0, 255). Поскольку в нормальном случае V>>DrawState выводит ее "как есть", используем TransparentBlt с нашим цветом прозрачности.
AG>Нужно такую дырку, чтобы были видны контролы под кнопкой? Или просто заменить прозрачный цвет на фон окна текущей темы?
AG>В первом случае только регионы, боюсь.
Нет, я просто хочу вывести картинку на кнопке (совместно с текстом). Под кнопкой никаких контролов нет — только диалог.
Но, поскольку картинка обычная BMP, DrawState выводит ее всю. Я не нашел способа дать понять DrawState, что в данном случае
прозрачным считается цвет RGB(255, 0, 255), поэтому вывожу картинку через TransparentBlt (последний параметр — цвет, который
нужно считать прозрачным).
Т.е. мне нужно или как-то дать понять DrawState, что на картинке пиксели с цветом RGB(255, 0, 255) считать прозрачными,
или найти способ самостоятельно формировать картинку "Emboss".
Здравствуйте, Vaynamond, Вы писали:
V>Нет, я просто хочу вывести картинку на кнопке (совместно с текстом). Под кнопкой никаких контролов нет — только диалог. V>Но, поскольку картинка обычная BMP, DrawState выводит ее всю.
А, то есть надо дать кнопке нарисоваться штатно, затем нарисовать свой битмап сверху?
Убрать BS_OWNERDRAW,
обрабатывать NM_CUSTOMDRAW: при CDDS_PREPAINT возвращать CDRF_NOTIFYPOSTPAINT, при CDDS_POSTPAINT — рисовать свой битмап.
(да, NM_CUSTOMDRAW для кнопки требует Common Controls 6.0, которые через манифест включаются.
А если они не используются, то таки остаться на BS_OWNERDRAW, и перед своим битмапом рисовать кнопку через DrawFrameControl, этого должно быть достаточно, ибо без Common Controls 6.0 визуальных стилей нет)
Здравствуйте, Alexander G, Вы писали:
AG>А, то есть надо дать кнопке нарисоваться штатно, затем нарисовать свой битмап сверху?
AG>Убрать BS_OWNERDRAW, AG>обрабатывать NM_CUSTOMDRAW: при CDDS_PREPAINT возвращать CDRF_NOTIFYPOSTPAINT, при CDDS_POSTPAINT — рисовать свой битмап.
AG>Та не. Они просто из всей документации по мере правок удаляют старые версии Windows. AG>Опа, BN_CLICKED тоже типа только во времена Висты изобрели
AG>У меня оффлайновый MSDN April 2007, в котором этого рефакторинга нет (включая упоминания Win98), и там для этого сообщения указана Windows XP. (Но да, нужен Common Controls 6.0)
Он-на ка-а-ак (ц)… А если Visual Styles вообще отключены пользователям, тогда как быть? Я несколько раз просил отскриншотится о проблемах своих пользователей. И хотя я точно знаю что у них Виста\7+, то частенько вижу как раз пейзаж отключенных стилей. Гуй в стиле Win2K… Ну есть фанаты\или требования какие — вот отключают стили в винде напрочь.
И как тогда быть?!?! В общем, в своих случаях я делал иначе: Субкласс\ИлиСуперКласс кнопки + перехват WM_PAINT + отрисовка по умолчанию, а уж затем свои раскраски добавлять.
Здравствуйте, Carc, Вы писали:
C>Он-на ка-а-ак (ц)… А если Visual Styles вообще отключены пользователям, тогда как быть? Я несколько раз просил отскриншотится о проблемах своих пользователей. И хотя я точно знаю что у них Виста\7+, то частенько вижу как раз пейзаж отключенных стилей. Гуй в стиле Win2K… Ну есть фанаты\или требования какие — вот отключают стили в винде напрочь.
Сам выбираю классическую тему, просто так больше нравится (меньше визуального шума).
Но фичи коммон контролов и визуальные стили ортогональны.
Ну то есть все полезности Common Control 6.0 будут на месте, хоть классическую тему выбери, хоть вообще службу тем отключи.
(Примеры других таких полезностей, что навскидку вспомню:
— Balloon Tooltip у Edit Control, для которого есть сообщение, и который сам есть при ES_NUMBER;
— готовые стрелочки в колонках в LVS_REPORT List-View )
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, Vaynamond, Вы писали:
V>>Нет, я просто хочу вывести картинку на кнопке (совместно с текстом).
AG>Кстати, а может просто BM_SETIMAGE ?
А вот это мысль...
Судя по табличке, в зависимости от комбинации BS_BITMAP/BM_SETIMAGE можно выводить картинку + текст в разных комбинациях.
P.S.: Сейчас попробовал, облом: выводит картинку вместе с фоном (как и DrawState)
Здравствуйте, Alexander G, Вы писали:
AG>А, то есть надо дать кнопке нарисоваться штатно, затем нарисовать свой битмап сверху?
Ну да.
AG>Убрать BS_OWNERDRAW, AG>обрабатывать NM_CUSTOMDRAW: при CDDS_PREPAINT возвращать CDRF_NOTIFYPOSTPAINT, при CDDS_POSTPAINT — рисовать свой битмап.
Тут такой вопрос возник: при отображении нормальной кнопки все просто. А когда кнопка задизейблена ?
У меня сейчас проблема именно с выводом задизейбленой кнопки.
AG>(да, NM_CUSTOMDRAW для кнопки требует Common Controls 6.0, которые через манифест включаются. AG>А если они не используются, то таки остаться на BS_OWNERDRAW, и перед своим битмапом рисовать кнопку через DrawFrameControl, этого должно быть достаточно, ибо без Common Controls 6.0 визуальных стилей нет)
Рисовать кнопку именно через DrawFrameControl ? Я сейчас использую DrawEdge — вроде кнопка получается адекватная.
Здравствуйте, Vaynamond, Вы писали:
V>Тут такой вопрос возник: при отображении нормальной кнопки все просто. А когда кнопка задизейблена ? V>У меня сейчас проблема именно с выводом задизейбленой кнопки.
В случае NM_CUSTOMDRAW на стадии CDDS_POSTPAINT всё уже нарисовано за нас, включая и дизейбл:
V>Рисовать кнопку именно через DrawFrameControl ? Я сейчас использую DrawEdge — вроде кнопка получается адекватная.
Через DrawFrameControl можно адекватно рисовать разные контролы (типа галочек и стрелочек) в разных состояниях.
В частности, для кнопки не надо явно задавать направление и ширину выступа.
bool button_is_pushed = true;
bool button_is_disabled = true;
UINT state = DFCS_BUTTONPUSH;
if ( button_is_pushed )
state |= DFCS_PUSHED;
if ( button_is_disabled )
state |= DFCS_INACTIVE;
CRect rect(CPoint(10, 10), CSize(72, 26));
dc.DrawFrameControl(rect, DFC_BUTTON, state);
Но это если без визуальных стилей. Со всякими DrawTheme* функциями мороки больше.
Здравствуйте, Alexander G, Вы писали:
V>>Рисовать кнопку именно через DrawFrameControl ? Я сейчас использую DrawEdge — вроде кнопка получается адекватная.
AG>Через DrawFrameControl можно адекватно рисовать разные контролы (типа галочек и стрелочек) в разных состояниях. AG>В частности, для кнопки не надо явно задавать направление и ширину выступа.
Я за основу брал пример из CodeGuru, так там еще более замороченный алгоритм: если кнопка нажата, она рисуется
с помощью FrameRect, а в остальных случаях — через DrawFrameControl.
Здравствуйте, Vaynamond, Вы писали:
AG>>Через DrawFrameControl можно адекватно рисовать разные контролы (типа галочек и стрелочек) в разных состояниях. AG>>В частности, для кнопки не надо явно задавать направление и ширину выступа.
V>Я за основу брал пример из CodeGuru, так там еще более замороченный алгоритм: если кнопка нажата, она рисуется V>с помощью FrameRect, а в остальных случаях — через DrawFrameControl.
А там у примера дата какая стоит?
CodeGuru хороший портал, удобный, с примерами, вот только жаль, что не популярный
я оттуда в своё время тоже код таскал
Здравствуйте, Alexander G, Вы писали:
AG>В случае NM_CUSTOMDRAW на стадии CDDS_POSTPAINT всё уже нарисовано за нас, включая и дизейбл:
Сейчас стал смотреть, как пару лет назад панель инструментов делал на основе ReBar'а, так там картинки передаются
через ImageList. Собственно, вопрос: с кнопками такой вариант не прокатит ?
Смущает то, что есть для добавления BMP-файла макросы Add/AddMasked, для добавления ICO-файла макрос AddIcon,
а для получения — только GetIcon. Или прямо выводить с помощью ImageList_Draw ?
Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, Vaynamond, Вы писали:
AG>>>Через DrawFrameControl можно адекватно рисовать разные контролы (типа галочек и стрелочек) в разных состояниях. AG>>>В частности, для кнопки не надо явно задавать направление и ширину выступа.
V>>Я за основу брал пример из CodeGuru, так там еще более замороченный алгоритм: если кнопка нажата, она рисуется V>>с помощью FrameRect, а в остальных случаях — через DrawFrameControl.
CEM>А там у примера дата какая стоит? CEM>CodeGuru хороший портал, удобный, с примерами, вот только жаль, что не популярный CEM>я оттуда в своё время тоже код таскал
C>>И как тогда быть?!?! В общем, в своих случаях я делал иначе: Субкласс\ИлиСуперКласс кнопки + перехват WM_PAINT + отрисовка по умолчанию, а уж затем свои раскраски добавлять.
CEM>По-хорошему, надо делать разбор ситуации. Я у себя проверял версию винды, плюс включены-выключены стили, и в зависимости от этого рисовал что-то своё в каждом случае. CEM>Конкретно сабкласс кнопки на 7+dwm приведёт к тому, что при наведении мышки винда будет пытаться рисовать свою анимацию, а сабкласс будет ловить события WM_PAINT после анимации и рисовать своё — в случае или своего бака или бака у иконки будет мельтешение в кнопке.
CEM>По теме: я бы открыл картинку в редакторе и сделал 32-битную с альфой, потом BM_SETIMAGE (я так всегда делаю)
У меня там простенькая графика. Вроде стрелки влево\вниз где-нить на кнопочке. Городить из-за этого ресурс в каждом проекте, чтобы только его нарисовать на кнопке смысла мало. А так все банально: отрисовались по дефолту, а потом исключительно в клиентской области дорисовывается эта стрелочка. В общем, у меня там бликерить просто нечему. Разве что это ручками нарисованная стрелка "живая" — реагирует когда мыша над ней, и когда уходит.
Короче говоря, простенькая такая приблуда, чтобы сделать кнопку в стиле "Кнопка + Доп. варианты" (щелкнули по стрелке, какой-то как правило выбор предоставляется: менюшка там аль еще какая ересь). Делов-то минут на 30 со всеми красотами и проверками. А главное, никаких внешних (для кода кнопки) ресурсов. Вещь полностью в себе. Соответственно, и проверять нечего кочуя из проекта в проект. Разве что все руки не дойдут на переписать в WinAPI-like стиле, чтобы не поддерживать несколько версий (WTL, MFC и прочия).
Здравствуйте, Carc, Вы писали:
C>Короче говоря, простенькая такая приблуда, чтобы сделать кнопку в стиле "Кнопка + Доп. варианты" (щелкнули по стрелке, какой-то как правило выбор предоставляется: менюшка там аль еще какая ересь).
BS_SPLITBUTTON, что ли? А зачем её самому рисовать?
Здравствуйте, Vaynamond, Вы писали:
V>P.S.: Сейчас попробовал, облом: выводит картинку вместе с фоном (как и DrawState)
Если в остальном устраивает, то картинку можно перегнать в битмап с альфаканалом или иконку с альфаканалом перед передачей туда.
Всяко лучше без своего рисования, чем с ним.
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, Vaynamond, Вы писали:
V>>P.S.: Сейчас попробовал, облом: выводит картинку вместе с фоном (как и DrawState)
AG>Если в остальном устраивает, то картинку можно перегнать в битмап с альфаканалом или иконку с альфаканалом перед передачей туда. AG>Всяко лучше без своего рисования, чем с ним.
Я немного выше написал уже, что выкрутился через ImageList. Добавляю туда BMP-шку с маской RGB(255, 0, 255), а в WM_DRAWITEM дергаю
ImageList_GetIcon(..., ILD_TRANSPARENT) и скармливаю полученный хендл функции DrawState. В итоге корректно выводится
и штатная картинка, и задизейбленая.
Здравствуйте, Vaynamond, Вы писали:
V>>>Я за основу брал пример из CodeGuru, так там еще более замороченный алгоритм: если кнопка нажата, она рисуется V>>>с помощью FrameRect, а в остальных случаях — через DrawFrameControl.
V>На исходнике декабрь 2002.
Ааа... это потому что ещё семёрки не было в природе
Здравствуйте, CEMb, Вы писали: CEM>Здравствуйте, Carc, Вы писали:
CEM>А стрелку ты как рисовал? А разделитель?
Ну вот скриншотец от такой кнопки.
Кнопка внизу диалога "Справка" именно с этой стрелкой. При клике по кнопке действие по умолчанию, при клике по стрелке меню с вариантами.
А рисовал просто: банальный треугольник стилизованный тенями на границах, и получается типа вдавленный. Соответственно, на лету в WM_PAINT, после дефолта, создали перья с нужными цветами и отрисовались.
Можно просто на Vista+ использовать нативный BS_SPLITBUTTON, а на XP самоделку. Это imho было бы более user-friendly. И (как вариант) в качестве стрелки можно использовать битмап, получаемый через LoadBitmap(0, OBM_COMBO).
Я в аналогичной ситуации сделал проще — в Vista+ использую BS_SPLITBUTTON, а на XP забиваю. Но у меня правый щелчок мыши равнозначен нажатию на доп стрелку, поэтому и пользователи XP тоже имеют доступ к появляющемуся меню.
Здравствуйте, Aniskin, Вы писали:
A>Здравствуйте, Carc, Вы писали:
C>>А рисовал просто
A>Можно просто на Vista+ использовать нативный BS_SPLITBUTTON, а на XP самоделку. Это imho было бы более user-friendly.
Но это нарушение правила ODR… Если ружье висит на стене, то в каком-нить акте оно все-таки выстрелит. Я в том смысле, что рано или поздно две разных ветки кода рассинхронятся. И одна будет вести так, а другая эдак. И пойдут малопонятные проблемы и жалобы от юзеров. Причем проблема будет во внешнем коде: т.к. обрабатывать BS_SPLITBUTTON будет внешний код, на котором оно висит. В моем случае всё однозначно. Куда кликнули решает только мой код (мимо стрелки, или по стрелке) — а внешний код только отвечает за реакцию на это.
Мухи — отдельно, котлеты отдельно.
A>И (как вариант) в качестве стрелки можно использовать битмап, получаемый через LoadBitmap(0, OBM_COMBO).
Угусь, а завтра очередной индус поменяет в какой-нить винде этот самый битмап, и что мы получим на выходе? Какую красоту? Кто его знает? Причем узнаем мы об этом сильно позже других. На кой закладываться на это!?! Не проще ли ручками отрисоваться на HDC? Кто мешает? И, заметьте Ватсон, вся отрисовка полностью под нашим контролем. Всегда. Везде.
A>Я в аналогичной ситуации сделал проще — в Vista+ использую BS_SPLITBUTTON, а на XP забиваю. Но у меня правый щелчок мыши равнозначен нажатию на доп стрелку, поэтому и пользователи XP тоже имеют доступ к появляющемуся меню.
Та я в принципе не против и забить. Но вот какое дело… Только из-за этой штучки-дрючки сделать софт неработоспособным на ХП? Стоит ли?
Пользователи они знаете какие? Вы забили на ХП, а они на ваш софт.
Позанудствую.
Стрелка "дополнительно" в последних всех операционках чёрненькая и направлена вниз. Я вот слегка задумался над смыслом белой стрелки вправо
Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, Carc, Вы писали:
CEM>>>А стрелку ты как рисовал? А разделитель? C>>Ну вот скриншотец от такой кнопки.
CEM>Ну вот, там нет альфы, поэтому всё ок CEM>А меня постоянно тянет на красоту, поэтому у меня кнопки со всякими градиентами, интерактивным контентом, альфой и комплексными тенями.
Не уловил, а откуда такая красота? Если это твои битмапки там отрисованы, то что опять же мешает? Раз все равно своё, то можно дорисовать что надо. Разве не так?
Я ж говорил несколько суть о другом. Мне нужен был механизм Customization, т.е. что бы всё по дефолту и всё делает система, а я только до делываю, до рисовываю (свою стрелку).
Причем чтобы не переделывать по 100 раз, вся отрисовка вещь в себе. Чтобы из проекта в проект таскать просто добавлением модуля и только. Никаких внешних ресурсов.
CEM>Позанудствую. CEM>Стрелка "дополнительно" в последних всех операционках чёрненькая и направлена вниз. Я вот слегка задумался над смыслом белой стрелки вправо Ну в данном случае “вправо” только потому, что у меня там меню справа будет, а не снизу.
Отрисовка, как говорил, полностью вещь в себе и alliclusuve. Понадобится, добавить еще варианты отрисовки дело 10 минут (код отрисовки локализован до пары функций).
Здравствуйте, Carc, Вы писали:
CEM>>Ну вот, там нет альфы, поэтому всё ок CEM>>А меня постоянно тянет на красоту, поэтому у меня кнопки со всякими градиентами, интерактивным контентом, альфой и комплексными тенями. C>Не уловил, а откуда такая красота? Если это твои битмапки там отрисованы, то что опять же мешает? Раз все равно своё, то можно дорисовать что надо. Разве не так?
Мешает там родное рисование кнопки. Тень — полупрозрачная. Т.е. если при первом проходе, нарисует 10% от чёрного, на втором 20%... в результате тень будет просто чёрная.
Там не совсем просто битмапки, там многослойная штука: 2 тени, интерактивный контент (оно движется), 2 бевела. Всё рисуется по-разному, в зависимости от положения и состояния мыши. Но это уже оффтоп. C>Я ж говорил несколько суть о другом. Мне нужен был механизм Customization, т.е. что бы всё по дефолту и всё делает система, а я только до делываю, до рисовываю (свою стрелку). C>Причем чтобы не переделывать по 100 раз, вся отрисовка вещь в себе. Чтобы из проекта в проект таскать просто добавлением модуля и только. Никаких внешних ресурсов.
Да, всё верно, я только хотел сказать про альфу, вон там выше "там нет альфы"