Вопрос № 76998: Вобщем вопрос в следущем:
каким образом создается тень... например у значков... или для примера тень у Сплэш-экpана при открытии Photoshop CS2.
Зранее спасибо!!...Вопрос № 77050: Доброе время суток, эксперты. Подскажите какой функцией заливается заголовок окна (по умолчанию он градиентом от синего к голубому). Как залить так градиентом своё окно. И реально ли изменить шрифт в заголовке использовать не стандартный или свой. Сп...Вопрос № 77052: Доброе время суток, эксперты. Подскажите как создать кнопку нестандратной формы, ну к примеру в виде звёздочки. Спасибо....Вопрос № 77305: Подскажите плиз можно ли только Win APi Функциями узанть контекст HDC устройства .... Сейчас чтобы его узнать мне приходится использовать MFC Но пишу длл и использовать там MFC не хочу.
Спасибо....
Вопрос № 76.998
Вобщем вопрос в следущем:
каким образом создается тень... например у значков... или для примера тень у Сплэш-экpана при открытии Photoshop CS2.
Зранее спасибо!!
Отправлен: 27.02.2007, 16:12
Вопрос задал: Gwest (статус: 2-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 7)
Отвечает: Sergey A. Wedensky
Здравствуйте, Gwest!
Тень у значков - это альфа-канал. Она может присутствовать только у значков 32-битного формата (24 бита на точку - цвет, 8 бит - прозрачность). Она не формируется из формы значка, а присутствует там изначально, т.е. вокруг (ну или справа снизу) на изображении значка темные пикселы, а альфа-канал имеет непрозрачные значения на пикселах основного изображения, а на области тени плавно перетекает в прозрачные. Надо заметить, отображать такие значки умеет винда начиная с XP (или 2000?). Многие редакторы иконок, поддерживающие
XP формат умеют формировать тень автоматически.
Тень окну добавляется классовым стилем CS_DROPSHADOW (опять же, поддерживается в последних версиях Win).
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 01.03.2007, 11:07 Оценка за ответ: 5 Комментарий оценки: сенк
Вопрос № 77.050
Доброе время суток, эксперты. Подскажите какой функцией заливается заголовок окна (по умолчанию он градиентом от синего к голубому). Как залить так градиентом своё окно. И реально ли изменить шрифт в заголовке использовать не стандартный или свой. Спасибо.
Отвечает: Tek
Здравствуйте, Александр Михайлович!
Градиентная заливка замкнутой области: GradientFill() библиотеки GDI
Для рисования в заголовке окна обрабатывайте сообщение WM_NCPAINT.
В общем все сообщения неклиентской части окна (заголовок и границы) начинаются на WM_NC<...>, наример WM_NCERASEBKGND - затирание фона.
Кроме того можно искусственно имитировать заголовок на окне без заголовка.
Ну и другие варианты.
Соответсвенно вы можете не только заливать заголовок, но и писать на нем любым шрифтом, какой создадите CreateFont.
--------- WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: Студент)
Ответ отправлен: 28.02.2007, 09:13
Вопрос № 77.052
Доброе время суток, эксперты. Подскажите как создать кнопку нестандратной формы, ну к примеру в виде звёздочки. Спасибо.
Отвечает: Korolyov Alexandr
Здравствуйте, Александр Михайлович!
Есть такой вариант: можно использовать картинку (bmp) и обрабатывать сообщения происходящие на ней, только еще потребуется несколько вариантов изображений (нажатая кнопка, отжатая).
Так в Оффисе 97 был сделан ряд кнопок.
--------- Читайте help
Ответ отправил: Korolyov Alexandr (статус: 2-ой класс)
Ответ отправлен: 28.02.2007, 13:40
Вопрос № 77.305
Подскажите плиз можно ли только Win APi Функциями узанть контекст HDC устройства .... Сейчас чтобы его узнать мне приходится использовать MFC Но пишу длл и использовать там MFC не хочу.
Спасибо.
Отправлен: 01.03.2007, 13:20
Вопрос задала: Annuta (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Григорьеа Владимир Дмитриевич
Здравствуйте, Annuta!
Используйте функцию
HDC GetDC(
HWND hWnd // handle of window
);
ещё посмотрите функции GetDCEx и GetWindowDC
Ответ отправил: Григорьеа Владимир Дмитриевич (статус: 2-ой класс)
Ответ отправлен: 01.03.2007, 13:30 Оценка за ответ: 3 Комментарий оценки: Владимир, а вы не занете, как мне поменять функцию CPaintDC dc(this); // device context for painting на Win Api ???
Отвечает: Mitya86
Здравствуйте, Annuta!
так не используй mfc, пользуйся функцией GetDC, она вернет тебе указатель на контекст устройства и не требует мфс
Ответ отправил: Mitya86 (статус: 3-ий класс)
Ответ отправлен: 01.03.2007, 17:33
Отвечает: Korolyov Alexandr
Здравствуйте, Annuta!
Можно так: GetDC (hwnd: HWND);
где hwnd - это хэндел окна, контекст которого нужно получить
--------- Читайте help
Ответ отправил: Korolyov Alexandr (статус: 2-ой класс)
Ответ отправлен: 01.03.2007, 18:49