Вопрос

Я хочу создать приложение С# с несколькими прозрачными окнами с некоторым текстом.

Сложнее всего разместить эти формы поверх рабочего стола, но под значками на рабочем столе.Это возможно?

Это было полезно?

Решение

Просто сделать окно прозрачным очень просто:

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 любой текст, отображаемый с установленными флагами сглаживания, отображается так, как если бы фон НЕ был прозрачным.Конечным результатом является то, что вы получаете текст с небольшой рамкой несоответствующего цвета вокруг него.Я уверен, что это справедливо и для всего остального, хотя я не пробовал.

Есть мысли как это решить?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top