Если вы хотите использовать PNG для контроля прозрачности, вы можете заглянуть в «многослойные окна»:
- SetWindowLong (Handle, GWL_EXSTYLE, GetWindowLong (Handle, GWL_EXSTYLE) или WS_EX_LAYERED);
- UpdateLayeredWindow
Это позволяет вам иметь переменную прозрачность по всему окну, как это позволяет PNG! Проблема в том, что элементы управления в многослойных окнах не работают, я думаю, это проблема Windows. Мое решение состояло в том, чтобы на самом деле разбить большое окно на несколько меньших окон со всеми элементами управления на не слоистых окнах. Это создает еще одну проблему, потому что теперь у вас есть несколько окон, и вы хотите, чтобы они двигались как одно окно. Решение: реализовать собственный алгоритм перемещения окна по экрану и использовать:
- BeginDeferWindowPos
- DeferWindowPos
- EndDeferWindowPos
... чтобы переместить все окна одновременно, чтобы пользователь не знал, что она смотрит на несколько окон! Наконец, если вы хотите получить фантазию, вы можете заглянуть в SetWindowRgn: это позволяет создавать окно непрямоугольной формы.
P.S .: Читая ссылку Андреа от Уве Раабе, он использует ту же технику, только он упаковал ее, готовую к действию!