forma transparente no ambiente de trabalho
Pergunta
Eu quero criar um aplicativo c # com várias janelas que são todos transparente com algum texto.
A parte difícil é fazer essas formas se sentar em cima da mesa, mas sob os ícones do desktop. Isso é possível?
Solução
Apenas fazendo a janela transparente é muito simples:
this.BackColor = Color.Fuchsia;
this.TransparencyKey = Color.Fuchsia;
Você pode fazer algo parecido com isso para torná-lo assim que você ainda pode interagir com o ambiente de trabalho ou qualquer outra coisa sob a sua janela:
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 );
}
}
Outras dicas
Obrigado pelas dicas Jeff. Sua ainda não é bem o que eu estou atrás. Eu efetivamente como a janela para aparecer como se fosse parte da área de trabalho para ícones poderia sentar-se no topo da minha forma.
Talvez haja uma maneira diferente de fazê-lo. Eu realmente pode desenhar texto e gráficos diretamente para o desktop?
O método descrito acima por Jeff Hillman é eficaz em fazer a janela transparente, que deve dar-lhe a capacidade de fazê-lo aparecer como se fosse parte da área de trabalho (que você mencionou é o seu objetivo.
Um problema que você pode executar em que tenho apenas recentemente correr para bem, está atraindo para a janela com todas as bandeiras anti-aliasing definidos. Especificamente, usando DrawText, qualquer texto que é processado com bandeiras anti-aliasing conjunto é processado como se o fundo não eram transparentes. O resultado final é que você começa de texto com uma leve beira off-color em torno dele. Tenho certeza que isso seria verdadeiro para qualquer outra coisa também, embora eu não tenha tentado.
Existem quaisquer pensamentos sobre como resolver isso?