Pregunta

Así que he leído que StretchBlt puede reflejar imágenes horizontalmente y / o verticalmente mediante la negación de la nWidthSrc / Dest y parámetros nHeightSrc / Dest. Me gustaría que esta funcionalidad sin la sobrecarga de rendimiento de un StretchBlt. Probé la misma técnica con BitBlt, pero no funcionó.

¿Hay alguna manera de reflejar una imagen con algo tan simple como BitBlt, sin la exageración de un StretchBlt? O se StretchBlt no afecta al rendimiento si los tamaños de fuente y destino son los mismos?

¿Fue útil?

Solución

BitBlt sólo realizará operaciones mathmatic (OR, XOR, etc.) en los píxeles individuales en cuestión, no va a cambiar el tamaño de la imagen de ninguna manera. Eso es exactamente lo que es para StretchBlt y StretchBlt (en comparación con cualquier otro gráfico operación de cambio de tamaño) es increíblemente rápida como en la mayoría de los casos se puede utilizar la tarjeta de gráficos para acelerar su rendimiento.

Otros consejos

Todas las funciones de Win32 son probablemente va a ser muy optimizado.

¿Qué le hace pensar StretchBlt será un gran impacto en el rendimiento?

¿Ha perfila su aplicación utilizando StretchBlt?

Se puede revertir todos los datos de mapa de bits a sí mismo y ver si se puede hacer mejor que StretchBlt.

Aquí hay un enlace que podría ayudarle a cabo:

http://www.codeguru.com/cpp /gm/bitmap/specialeffects/article.php/c1739

Para reflejar una imagen sólo tiene que recorrer los píxeles en orden inverso. Por ejemplo, si desea reflejar horizontalmente sólo tiene que hacer lo siguiente:

  1. ampliar lienzo de la imagen para duplicar el tamaño
  2. comience en la parte inferior de la imagen y el trabajo que manera de escribir los píxeles en al área de espejo de arriba hacia abajo.
  3. hacer el paso 3, de izquierda a derecha.

No sé qué idioma se está utilizando, pero la mayoría de ellos permiten que manipula los píxeles o bits de forma individual utilizando GDI.

No hay forma en que van a ser más eficientes que StretchBlt, a menos que sepa algo de información adicional acerca de la imagen (por ejemplo, hay una frontera por lo que no tiene que dar la vuelta ciertos píxeles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top