[C con Clase] Una Funcion en WinApi

Steven R. Davidson vze266ft en verizon.net
Lun Dic 11 17:30:22 CET 2006


Hola Abel,

Ringo wrote:

> Hola a todos,
> estuve navegando por las páginas alemanas y encontré la siguiente 
> Función que teóricamente refleja una imagen de distintas formas. Intente 
> utilizarla, pero no me resulta. Talvez alguien me pueda indicar cómo 
> debo llamar a esa función en mi programa. Gracias por toda respuesta.

Bueno, Salvador se me ha adelantado con la respuesta, pero quiero 
agregar a su explicación.

Como ya se ha dicho, la función transforma la imagen original a su 
reflejo, posiblemente. Sin embargo, existe la función estándar 
'StretchBlt()' que puede ser usada para realizar la misma funcionalidad 
que el código que nos mostraste. Por ejemplo,

BITMAP bmp;
GetObject( hBitmap, sizeof bmp, &bmp );

HDC hdcOriginal = CreateCompatibleDC( hdcPantalla );
SelectObject( hdcOriginal, hBitmap );

HDC hdcResultado = CreateCompatibleDC( hdcPantalla );
HBITMAP hbmpResultado =
        CreateCompatibleBitmap( hdcPantalla, bmp.bmWidth, bmp.bmHeight );
SelectObject( hdcResultado, hbmpResultado );

// Imagen reflejada vertical y horizontalmente
StretchBlt( hdcResultado, 0,0, bmp.bmWidth,bmp.bmHeight,
             hdcOriginal, bmp.bmWidth,bmp.bmHeight, 0,0, SRCCOPY );

// Borrar los recursos que no necesitemos
...


Prefiero usar 'StretchBlt()' por dos razones:
1. Sabemos que funciona correctamente, al pertenecer al API.
2. No modificamos los modos del DC como son las coordenadas y 
dimensiones, como lo hace el código que nos mostraste.


Espero que esto te ayude.

Steven








Más información sobre la lista de distribución Cconclase