| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > прозрачный фон |
| Автор: vinter 8.2.2007, 15:18 |
| почитал похожие топики, ничем не помогло.. проблема : рисую свою кнопку, фон у окна картинка с градиентной заливкой, поэтому задний фон у кнопки поставить не могу(всегда разный будет), рисую в памяти потом кидаю BitBlt'ом, так вот вопрос как мне у битмапа в памяти сделать фон как у картинки, причем чтобы этот фон менялся в зависимости от положения кнопки на окне, надеюсь понятно изьяснился |
| Автор: _hunter 8.2.2007, 15:50 |
| не совсем понятно... т.е. ты хочеш иметь битмап картинки "под кнопкой"? -- тогда самый простой способ (AFAIK) -- сделать функцию, принимающую этот битмап от парента (в OnEraseBkgnd сохраняй фон и передавай его) |
| Автор: vinter 8.2.2007, 17:39 |
| попробую объяснит яснее, битмап в памяти имеет прямоугольную форму, а я допустим рисую круглую кнопку, так вот круглая кнопка занимает не весь битмап, а только его часть, так вот мне нужно, чтобы часть битмапа которая к кнопке отношения не имеет была цвета заднего фона.. |
| Автор: _hunter 8.2.2007, 17:55 |
| ну так делай как я сказал, а rect == описанному вокруг кнопки прямоугольнику... |
| Автор: vinter 8.2.2007, 18:07 |
| т.е мне сохранить кусок фона, на который ложится кнопка, а потом запихать ее в битмап?? я правильно понял?? если правильно то возникает вопрос, как сохранить этот кусок фона..?? |
| Автор: _hunter 8.2.2007, 19:50 | ||
| правильно. сохранять примерно так:
(_background -- член класса типа HBITMAP). предок вызывает эту функцию в самом конце OnEraseBkgnd() (когда весь фон гарантированно отрисован) |
| Автор: vinter 8.2.2007, 20:13 |
| _hunter, спасибо, попробую отпишусь |
| Автор: vinter 11.2.2007, 15:58 |
| _hunter, создал эту ф-ию она у меня член класса кнопки, но она не вызывается, т.е никогда в нее не заходит, почему такое может быть??, может я че не так понял..да и в MSDN такой ф-ии не нашел.. |
| Автор: FelikZ 11.2.2007, 16:41 |
| OnEraseBkgnd() - определил? |
| Автор: vinter 11.2.2007, 17:08 |
| да и оставил, его пустым |
| Автор: FelikZ 11.2.2007, 17:25 | ||
имелось ввиду что "CCustomPicture::SaveBackground" вызывается в конце тобою определенной ф-и OnEraseBkgnd() . |
| Автор: vinter 11.2.2007, 17:49 |
| FelikZ, спасибо, и последний вопрос как мне этот битмап теперь нарисовать в памяти?? BitBlt?? как?? |
| Автор: vinter 11.2.2007, 18:13 |
| нарисовал через DrawState, всем спасибо за помощь! |