![]() |
|
|
![]()
|
|
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Привет!
Нужно скопировать фон диалога под кнопкой в кнопку.. Потерялся с координатами. Копирование происходит в классе кнопки.
Бред получается -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: нет Всего: 18 |
ddx - х координата кнопки в клиентской части родительского диалога ddу - у координата кнопки в клиентской части родительского диалога А это зачем? И еще: BitBlt - использует логические координаты (как я понял из справки по МФС), а в rect`е - пиксели. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Да переводил координаты кнопки из оконных в родителские, т.е. узнавал положение кнопки от левого верхнего угла окна Добавлено @ 12:54
Так для этого и делал dlg->ScreenToClient(rect); Блин ,опять запутался... Добавлено @ 12:55 Не получается... Добавлено @ 13:04 Да нет..Вроде все правильно ...просто чето при ресайзинге остается старый фон.. Что же делать? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Если пару раз окно свернуть и востановить, тогда все ОК.
Блин, я уже запарился.. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
По идее, должно быть так:
Это если мы находимся в коде кнопки, и dc - ее контекст. Но копируется-то вовсе не фон, а то что по факту есть на этом месте в контексте. Если контекст не мемори, то большое подозрение, что это вообще одно и то же место в видеопамяти... И еще, поведение зависит от того, в какой момент этот код вызывается (что до этого нарисовано в контексте). И проверь, не стоит ли у диалога ClipChildren. -------------------- ... |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Немного опередила меня Но если убрать-такое мерцание!!!! Как быть! Добавлено @ 13:45
В void MyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Конечно, будет моргать - место кнопки заливается фоном перед каждой прорисовкой, а с ClipChildren оно из заливки вырезается...
Хотела написать - только через memory context, но подумала: это ж надо в диалоге Paint перехватывать, и подставлять свой контекст, и самому делать отрисовку всех контролов - только так можно гарантировать, что кнопки этот же контекст получат... В общем, караул, я бы туда не полезла... Наверно нужно идти другим путем. В чем задача-то состоит? Зачем фон туда-сюда копировать? -------------------- ... |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Вот посмотри на дизайн
Там в правом верхнем углу стоят две кнопки. Посмотри-фон под ними прозрачный! Мне нужно такт сделать, тем более, что у диалога есть ресайзинг, и еще часть верхнего битмпа растягивается.. Что посоветуете-ГОРЮ!!! Присоединённый файл ( Кол-во скачиваний: 11 )
all.rar 51,45 Kb-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Вот эта широкая полоса, на которой кнопки стоят - битмапом рисуется, в твоем коде, с помощью StretchBlt?
Тогда так: рисуй сразу в два контекста, сначала в memory-context с растяжением, потом копируй BitBlt в экранный. Потом под кнопками рисуй из мемори. ClipChildren верни взад. -------------------- ... |
|||
|
||||
| Coocky |
|
||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Уф.. Загнула.. Если есть время -подправь
Диалог
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||||
|
|||||||
| Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Я во проще сделал, но результат такой же...
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Извини, смысла твоих многочисленных переменных, а также BitBlt и StretchBlt, не понимаю, но коротко я имела в виду следующее:
Допустим, в класе диалога есть мемори-контекст m_BmpMemDC, к которому приаттачен исходный битмап. Еще там есть m_StretchedDC + m_StretchedBmp, соответственно Далее, в OnEraseBkgnd диалога делаем следующее (пишу только то, что нужно для полосы).
Все, теперь у нас есть откуда скопировать фон под кнопки Далее, в Button::OnDrawItem копируем фон не из c_dc (b вообще, он нам больше не нужен), а из m_StretchedDC. По-моему, должно получится. -------------------- ... |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Верхний битмап разделен на две части, т.к. примерно 1/3 слева содержит текст-(у тебя его не видно) Следовательно я тяну вторуе 2/3, что б текст не расползался.. Сейчас пропробую твой код.. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Earnest
Запутала Есть три битмапа bmp1 bmp2 bmp3 есть CDC memDC1 CDC memDC2 CDC memDC3 Что дальше? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Coocky
Это ты меня запутал. Я думала, тебе обязательно нужно фон скопировать. А тебе всего лишь нужно его не испортить (хотя, конечно, можно было из твоего кода понять, но я особо не вникала - я же на работе, и меня тут со всех сторон пинают,... т.е. пытаются Короче, твой вариант с ImgList и ILD_TRANSPARENT самый нормальный, особенно, если получилось, и нечего тут голову ломать. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |