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

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: 111865
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
3,00 3.10 WINDOWS kbprg kbbuglist
Sintomas
Se o fator de alongamento for grande, por exemplo, quando alongamento de uma pequena uma altura grande StretchDIBits() e StretchBlt() podem retornar zero (0) e não exibir nada. O bitmap mesmo com um menor Alongar é exibido corretamente.
Causa
A maioria dos drivers de vídeo não implementam seus próprios StretchBlt() ou StretchDIBits() para que GDI deve simular essas chamadas. Parte da simulação GDI envolve alocar buffers de trabalho temporários, que são limitados a 64 K. Se o tamanho do buffer de trabalho é calculado seja maior que 64 K, a altura dos retângulos origem e destino são halved até que eles sejam menos de 64 K. O problema é que se deve continuar GDI dividir a altura por dois (2) para obter um buffer menor que 64 K, a altura de origem ou destino pode eventualmente alcançar uma linha de verificação. Neste ponto, a chamada falhará porque ele não é possível dividir uma linha de verificação em subunits.

StretchBlt() e StretchDIBits() não são projetados para fornecer alongando ilimitado. No entanto, eles podem falhar um pouco mais prematuramente que seus limitação de design.
Resolução
Se StretchBlt() ou StretchDIBits() falhar em uma grande Alongar, um aplicativo pode dividir o bitmap de origem, alongar as partes individualmente e posicioná-los corretamente uma vez alongada. Outra alternativa é fazer um alongue menor. Não há nenhuma fórmula para determinar exatamente o que bitmaps falhará em que tamanho alongamento.
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.
Mais Informações
Para reproduzir o problema, crie um bitmap aproximadamente 2048 pixels de largura por 16 pixels de altura. Em seguida, exibir o bitmap com o exemplo DIBVIEW no SDK do Windows 3.1. Escolha Estender A janela menu de opções do DIBVIEW, para que o bitmap é alongado acordo com para o tamanho da janela do cliente. Quando a altura é mais de cerca de 200 pixels, o bitmap não será exibido.
buglist3.00 buglist3.10 3,00 3.10 falhas zoom

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 111865 - Última Revisão: 01/11/2015 00:50:17 - Revisão: 2.1

Microsoft Windows Software Development Kit 3.0, Microsoft Windows Software Development Kit 3.1

  • kbnosurvey kbarchive kbmt kbbug kbpending KB111865 KbMtpt
Comentários