Erro: TransparencyKey não funciona para controles em buffer duplo no modo de cor de 32 bits

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 820640
Sintomas
Você pode ter um formulário do Microsoft Windows com um controle de usuário que tenha o DoubleBuffer controle estilo bit definido como TRUE. Ou, você pode ter um controle do Microsoft Windows Forms (como um botão, um controle PictureBox, um CheckBox ou um Label) com a propriedade DoubleBuffer que é automaticamente definida. Quando você definir a propriedade TransparencyKey de Windows Form como o valor da propriedade BackColor e em seguida, executar o aplicativo, o formulário aparece transparente e o controle aparece na cor.

Observação A cor é definida na propriedade BackColor de Windows Form.

Observação Você deve ter a qualidade da cor definida como cor de 32 bits de modo de exibição.
Resolução
Para resolver esse problema em um aplicativo do Microsoft Windows com um controle Windows Forms, execute essas etapas:
  1. Clique com o botão direito do mouse Label1 e, em seguida, clique em Propriedades .
  2. Na janela Properties , defina a propriedade FlatStyle ao sistema .
  3. No menu Debug , clique em Iniciar .

    Você pode observar que o formulário e o controle Windows Forms são transparentes. Esse problema é mencionado na seção "Mais informações" deste artigo.
Para resolver o problema em um aplicativo do Windows com um controle de usuário, execute essas etapas:
  1. No Solution Explorer, clique com o botão direito do mouse UserControl1.vb e, em seguida, clique em View Code .
  2. Substitua a instrução
    SetStyle(ControlStyles.DoubleBuffer,				true)
    existente com a instrução a seguir:

    Visual Basic .NET ou Visual Basic 2005
     SetStyle(ControlStyles.DoubleBuffer, False)
    translation from VPE for Csharp Visual .NET ou Visual translation from VPE for Csharp 2005
    SetStyle(ControlStyles.DoubleBuffer,false);
  3. No menu Debug , clique em Iniciar .

    Você pode observar que o formulário e o controle de usuário são transparentes. Esse problema mencionado na "Mais informações" seção deste artigo.
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Mais Informações
Observação Antes de começar a "passos para reproduzir o problema", execute estas etapas:
  1. Clique com o botão direito do mouse em Desktop e, em seguida, clique em Propriedades .
  2. Clique na guia configurações .

    Verifique se que a qualidade de cor está definido para máxima (32 bits) . Alguns computadores podem não suportar a qualidade de cor de 32 bits porque a qualidade da cor depende a placa de vídeo do computador.

Etapas para reproduzir o problema

Windows Forms com controle do Windows Forms

  1. No Microsoft Visual Studio .NET ou no Microsoft Visual Studio 2005, criar um novo Windows aplicativo usando Visual Basic. NET, Visual Basic 2005, Visual translation from VPE for Csharp 2005 ou Visual translation from VPE for Csharp .NET.

    Por padrão, é criado o Form1 .
  2. Em Toolbox , arraste um controle Label para Form1 .
  3. Clique com o botão direito do mouse no Form1 e, em seguida, clique em Propriedades .
  4. Na janela Properties , selecione a propriedade BackColor e, em seguida, clique em Personalizar guia.

    Selecione qualquer cor diferente de branco.
  5. Na janela Properties , defina a propriedade TransparencyKey com o mesmo valor como a propriedade BackColor .
  6. No menu Debug , clique em Iniciar .

    Você pode ver que o formulário é transparente. No entanto, o rótulo aparecerá na cor que é definida na propriedade BackColor .

Etapas para reproduzir o problema

Formulário do Windows com um controle de usuário

  1. No Visual Studio .NET ou Visual Studio 2005 ijn, crie uma nova biblioteca de controle do Windows usando o Visual Basic. NET, Visual Basic 2005, Visual translation from VPE for Csharp 2005 ou Visual translation from VPE for Csharp. NET.

    Por padrão, UserControl1 é criado.
  2. No menu Exibir , clique em código . Na região de código gerado pelo Windows Form Designer , adicione as seguintes instruções no construtor de UserControl1 após a instrução
    InitializeComponent()
    :

    Visual Basic .NET ou Visual Basic 2005
    'These Control Style bits enable double-buffering.SetStyle(ControlStyles.UserPaint,True)SetStyle(ControlStyles.AllPaintingInWmPaint, True)SetStyle(ControlStyles.DoubleBuffer, True)
    translation from VPE for Csharp Visual .NET ou Visual translation from VPE for Csharp 2005
    //These Control Style bits enable double-buffering.SetStyle(ControlStyles.UserPaint,true);		SetStyle(ControlStyles.AllPaintingInWmPaint, true);SetStyle(ControlStyles.DoubleBuffer, true);
  3. No menu Build , clique em Build Solution .
  4. No menu arquivo , aponte para Adicionar projeto e em seguida, clique New Project . Na seção Project Types , selecione Projetos do Visual Basic . Na seção modelos , selecione Windows Application .

    Observação No Visual Studio 2005, clique em Visual Basic em Project Types .

    Por padrão, é criado o Form1 .
  5. Em Toolbox , arraste um controle UserControl1 para Form1 .
  6. Clique com o botão direito do mouse no Form1 e, em seguida, clique em Propriedades .
  7. Na janela Properties , selecione a propriedade BackColor e, em seguida, clique em Personalizar marque qualquer cor diferente de branco.
  8. Na janela Properties , defina a propriedade TransparencyKey com o mesmo valor como a propriedade BackColor .
  9. No Solution Explorer, clique com o botão direito do mouse WindowsApplication1 e clique em Set as StartUp Project .
  10. No menu Debug , clique em Iniciar .

    Você pode ver que o formulário é transparente. No entanto, o controle de usuário aparece na cor que é definida na propriedade BackColor .
Referências
Para obter mais informações sobre a propriedade Form.TransparencyKey e enumeração ControlStyles, visite os seguintes sites:
http://msdn2.microsoft.com/en-us/library/system.windows.forms.form.transparencykey(vs.71).aspx

http://msdn2.microsoft.com/en-us/library/system.windows.forms.controlstyles(vs.71).aspx

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 820640 - Última Revisão: 11/26/2007 07:58:47 - Revisão: 2.9

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual C# 2005 Express Edition, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbmt kbvs2005applies kbvs2005swept kbvs2002sp1sweep kbproperties kb32bitonly kbstyle kbdisplay kbwindowsforms kbctrl kbcontrol kbbug KB820640 KbMtpt
Comentários