Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Платформы Windows Mobile и Windows Embedded > Не работает прозрачность


Автор: Joss 11.3.2007, 18:49
Код

//...
:TransparentBlt(dc, 0, 0, ClientRect.Width(), ClientRect.Height(),
            MemDC, 0, 0, ClientRect.Width(), ClientRect.Height(), m_TranspColor);


В целом прорисовка происходит корректно, но  пикселы цвета m_TranspColor перестают перерисовываться, хотя по идее должны иметь цвет фона.

Платформа - PocketPC, среда - VS 2005

Автор: HaronDDC 27.8.2007, 19:27
Вероятно, дело в том, что ВСЕ окна в WindowsCE имеют стили WS_CLIPSIBLINGS & WS_CLIPCHILDREN, поэтому ваш контрол (а видимо, вы привели фрагмент кода отрисовки), лежит на неком паренте, - при отрисовке парента - область, занятая вашим контролом убирается из области отсечения и не отрисовывается. Когда же происходит отрисовка вашего контрола, - "прозрачные" пикселы просто не прорисовываются - т.е. остается не то, что было "потенциально" на паренте, а то, что лежит под ним (возможно, это даже PPC окошко шелы).

Поэтому без вмешательства в дела СЕ нельзя создать дейтсвительно "прозрачные" контролы без извращений типа "запомнить, что отрисовалось и проче".....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)