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?

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top