2014-08-07 2 views
2

Я хочу вырезать часть формы firemonkey, , вызывая SetLayeredWindowAttributes с LWA_COLORKEY, черные части формы становятся кликами, но не прозрачными?Вырезать часть формы firemonkey, установив прозрачный цвет, не работает?

uses 
Winapi.Windows, FMX.Platform.Win 

SetWindowLong(FmxHandleToHWND(Form1.Handle), GWL_EXSTYLE, GetWindowLong(FmxHandleToHWND(Form1.Handle), GWL_EXSTYLE) or WS_EX_LAYERED); 
SetLayeredWindowAttributes(FmxHandleToHWND(Form1.Handle), RGB(0,0,0), 70, LWA_COLORKEY); 

ответ

2

Если вы проверяете определение функции SetLayeredWindowAttributes вы увидите, что третий параметр определяет значение альфа, чтобы описать непрозрачность многоуровневого окна.

Вы установили это значение 70, которое составляет около 27 процентов прозрачности.

Вы должны установить это значение в 0, если хотите получить прозрачность.

EDIT: Я считаю, что это должно работать как для приложений VCL, так и для FMX, поскольку SetLayeredWindowAttributes - это функция API окон, но я полагаю, что ошибался.

Я тем не менее найти вопрос о том, как установить частичную прозрачность для всего FMX здесь на SO AlphaBlend in FireMonkey

Может быть, вы могли бы изменить этот код, чтобы сделать только часть вашей формы прозрачна.

+0

не имеет значения 70, 0 или 255, LWA_COLORKEY дает полную прозрачность для любого цвета RGB (0,0,0) в форме, приведенный выше код работает с delphi vcl, но не с firemonkey. – isa

+0

Отредактировал мой ответ с потенциальным решением, найденным в другом вопросе SO. Я не могу проверить это, так как я не на своем компьютере разработки. – SilverWarior

Смежные вопросы