[C con Clase] Transformaciones y mapeo

Davidson, Steven srd4121 en njit.edu
Lun Oct 21 03:35:03 CEST 2013


Hola José,

2013/10/20 Jose del Castillo <mecauni_m4 en yahoo.com>

> Hola el capitulo 28 del curso de WINAPI se me hace un poco dificil, tengo
> dos preguntas sencillas aver si me ayudan:
> 1. ¿Como puedo hacer para que el eje y apunte hacia arriba? osea no quiero
> desplazarlo ni nada de eso, solo quiero que en vez de apuntar hacia abajo
> apunte arriba.
>

Si quieres aplicar este criterio a todas las operaciones gráficas, entonces
puedes cambiar el modo de mapeo (o de conversión). Sospecho que te interesa
'MM_TEXT', pero con los valores positivos de la coordenada Y yendo hacia
arriba. Podemos hacer esto,

Size size;

SetMapMode( hdc, MM_TEXT );  // No hace falta, ya que es el que se
establece por defecto
SetMapMode( hdc, MM_ANISOTROPIC );

GetViewportExtEx( hdc, &size );
SetViewportExtEx( hdc, size.cx, -size.cy, NULL );

Eso sí, el origen: (0,0) seguiría estando en la esquina superior izquierda.
Sería mejor cambiar el origen para que esté en la esquina inferior
izquierda.


Otra forma es crear una transformación de escala con un valor negativo para
crear reflejo. La matriz que te interesa es:

( 1  0  0 )
( 0 -1  0 )
( 0  0  1 )

Esto implica que tendrías que usar valores negativos, porque no hemos
cambiado el origen, que todavía estaría en la esquina superior izquierda.

2. Al hacer transformaciones y mapeos estos son permanentes, o se pierden
> cada vez que se libera el HDC??
>

Se basan en el DC indicado. Si miras las funciones, verás que siempre
requieren el HDC. También ten presente que el mapeo sólo entra en juego
cuando usamos coordenadas lógicas. Varias funciones del API de MS-Windows
involucran coordenadas del dispositivo, y por tanto, no toma en cuenta los
mapeos establecidos.


Espero haber aclarado un poco el tema.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20131020/da543bdc/attachment.html>


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