Error: Error de StretchBlt()/StretchDIBits() con gran Stretch

Seleccione idioma Seleccione idioma
Id. de artículo: 111865 - Ver los productos a los que se aplica este artículo
3.00 3.10 WINDOWS kbprg kbbuglist
Expandir todo | Contraer todo

Síntomas

Si el factor de expansión es grande, por ejemplo, al estirar desde muy pequeños en un gran alto, StretchDIBits() y StretchBlt() pueden devolver cero (0) y no mostrar nada. El mismo mapa de bits con un estiramiento de menor tamaño se muestra correctamente.

Causa

La mayoría de los controladores de pantalla no implementan sus propios StretchBlt() o StretchDIBits() modo GDI debe simular estas llamadas. Parte de la simulación de GDI implica asignar búferes de trabajo temporal, que están limitados a 64 KB. Si se calcula el tamaño del búfer trabajo sea mayor que 64 KB, el alto de los rectángulos de origen y destino son halved hasta que tengan menos de 64 KB. El problema es que, si debe continuar GDI de dividir el alto por dos (2) para obtener un búfer menor que 64 KB, el alto de origen o destino podría llegar finalmente una línea de análisis. En este momento, la llamada falla porque no se puede dividir de una línea de análisis en subunidades.

StretchBlt() y StretchDIBits() no están diseñados para proporcionar estirar ilimitado. Sin embargo, pueden fallar un poco más prematuramente que su limitación de diseño.

Solución

Si StretchBlt() o StretchDIBits() produce un error en un estiramiento de gran tamaño, una aplicación puede dividir el origen de mapa de bits, expandir las partes individualmente y colocarlos correctamente una vez se expande. Otra alternativa es hacer un estiramiento de menor tamaño. No hay ninguna fórmula para determinar exactamente qué mapas de bits fallará en qué tamaño de expansión.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

Para reproducir el problema, cree un mapa de bits aproximadamente 2048 píxeles de ancho por 16 píxeles de alto. Después, mostrar el mapa de bits con el ejemplo DIBVIEW desde el SDK de Windows 3.1. Elegir ventana de Stretch menú de opciones del DIBVIEW, por lo que el mapa de bits se expande según al tamaño de la ventana del cliente. Cuando el alto es más de aproximadamente 200 píxeles, no se mostrará el mapa de bits.

Propiedades

Id. de artículo: 111865 - Última revisión: lunes, 07 de marzo de 2005 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Windows Software Development Kit 3.0
  • Microsoft Windows Software Development Kit 3.1
Palabras clave: 
kbmt kbbug kbpending KB111865 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 111865

Enviar comentarios

 

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