




Сделать окно прозрачным очень просто:
this.BackColor = Color.Fuchsia;
this.TransparencyKey = Color.Fuchsia;
Вы можете сделать что-то вроде этого, чтобы вы по-прежнему могли взаимодействовать с рабочим столом или чем-либо еще под вашим окном:
public const int WM_NCHITTEST = 0x84;
public const int HTTRANSPARENT = -1;
protected override void WndProc(ref Message message)
{
if ( message.Msg == (int)WM_NCHITTEST )
{
message.Result = (IntPtr)HTTRANSPARENT;
}
else
{
base.WndProc( ref message );
}
}
Спасибо за советы Джефф. Это все еще не совсем то, что мне нужно. Я бы хотел, чтобы окно выглядело так, как если бы оно было частью рабочего стола, чтобы значки могли располагаться поверх моей формы.
Может, есть другой способ сделать это. Могу ли я рисовать текст и графику прямо на рабочем столе?
Метод, описанный выше Джеффом Хиллманом, эффективен в том, чтобы сделать окно прозрачным, что должно дать вам возможность отображать его так, как если бы оно было частью рабочего стола (что, как вы упомянули, является вашей целью.
Одна проблема, с которой вы можете столкнуться, и с которой я недавно столкнулся, - это рисование в окне с любыми установленными флагами сглаживания. В частности, с помощью DrawText любой текст, отображаемый с установленными флагами сглаживания, отображается так, как если бы фон был НЕ прозрачным. В конечном итоге вы получаете текст с небольшой нецветной рамкой вокруг него. Я уверен, что это справедливо и для всего остального, хотя я не пробовал.
Есть какие-нибудь мысли, как это решить?