Erro: Falha de StretchBlt()/StretchDIBits() com esticar muito grande

Traduções de Artigos Traduções de Artigos
Artigo: 111865 - Ver produtos para os quais este artigo se aplica.
3.00 3.10 WINDOWS kbprg kbbuglist
Expandir tudo | Reduzir tudo

Sintomas

Se o factor de esticar for grande, por exemplo, quando esticar a partir de um pequeno para uma altura grande StretchDIBits() e StretchBlt() poderão devolver zero (0) e não mostrar nada. O mesmo mapa de bits com um menor esticar é apresentado correctamente.

Causa

A maior parte dos controladores de visualização não implementam StretchBlt() ou StretchDIBits() próprios para que GDI tem simular estas chamadas. Parte a simulação GDI envolve atribuir memórias intermédias de trabalho temporários, que são limitadas a 64 K. Se o tamanho do buffer trabalho é calculado seja maior do que 64 K, altura de rectângulos e de destino são halved até que se inferior a 64 K. O problema é que se GDI deve continuar a divisão de altura por dois (2) para obter uma memória intermédia inferior a 64 K, a altura de origem ou destino pode eventualmente atingir uma linha de análise. Neste ponto, a chamada falha porque não é possível dividir uma linha de análise para subunidades.

StretchBlt() e StretchDIBits() não foram concebidos para fornecer esticar ilimitado. No entanto, estes poderão falhar um pouco mais prematuramente do respectiva limitação de concepção.

Resolução

Se StretchBlt() ou StretchDIBits() falha uma grande Esticar, uma aplicação pode dividir o mapa de bits origem, esticar partes individualmente e posicioná-los correctamente uma vez esticada. Outra alternativa é uma esticar mais pequeno. Existe uma fórmula para determinar exactamente o que os mapas de bits falhará que tamanho Desdobrar.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Para reproduzir o problema, crie um mapa de bits aproximadamente 2048 pixels de largura por 16 pixels de altura. Em seguida, apresenta o mapa de bits com o exemplo DIBVIEW a partir do Windows 3.1 SDK. Escolha esticar à janela Opções de menu do DIBVIEW, para que o mapa de bits é esticado acordo com para o tamanho da janela do cliente. Quando a altura é mais do que cerca de 200 pixels, o mapa de bits não será apresentado.

Propriedades

Artigo: 111865 - Última revisão: 7 de março de 2005 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft Windows Software Development Kit 3.0
  • Microsoft Windows Software Development Kit 3.1
Palavras-chave: 
kbmt kbbug kbpending KB111865 KbMtpt
Tradução automática
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 111865

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com