[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