VisualDesigner: Bloqueado con la redimensión :S

Chavales, me he quedado frito cuando he llegado al snapping con la redimensión de elementos en el lienzo. Resulta que el snapping (alineación y ajuste) conforme vas moviendo o redimensionando los elementos es más chungo de lo que pensaba. El problema está en que el uso de deltas para movimiento y tamaño es complejísimo. Me explico: si un sistema de snapping se basa en movimientos relativos en vez de absolutos es muy difícil de programar, incluso mentalmente requiere una complejidad adicional bastante dura. ¿Cómo sabríamos si un objeto está junto a otro si solamente sabemos que la posición se ha incrementado en, por ejemplo, 3 píxeles?

Además, la dificultad añadida de tomar un punto de referencia para calcular los desplazamientos (tanto al mover como al redimensionar). Se me daba la situación de que al realizar un snap, la posición se fuerza, con lo que si tomamos como referencia el elemento al que vamos a forzar, la siguiente medida que hagamos será falsa. Para que me entendáis (aunque es chungo), si la posición de entrada real (deseada) es x=7, y=4 y forzamos a que la posición sean múltiplo de 5 para ambas coordenadas, la posición final (efectiva) sería x=5, y=5. Por tanto, si estamos usando la posición efectiva (5, 5), que va a saltos, en vez de la deseada, las medidas también fluctúan bruscamente debido a los saltos. Es decir, deberíamos tener por un lado la medida real intacta de la posición y basándonos en ella, posicionar el objeto.

He terminando decidiendo que todas las transformaciones usarán coordenadas absolutas (bueno, en realidad relativas al padre que contiene al objeto que está siendo modificado). De esta manera, al mover un objeto, la posición inicial queda almacenada durante la operación y se va calculando la final conforme se mueve el ratón.

De esta manera, hacer snapping es mucho más fácil. Creo que podré avanzar un poco más.

Otro tema que me ha tenido muy entretenido ha sido la redimensión. Quería hacerla sin condicionales y al final me ha salido más o menos, ¡pero telita lo que me ha costado! Llegué a plantear el uso de elipses para calcular las posiciones de los puntos de redimensión (los puntos que salen en las esquinas para cambiar el tamaño de los objetos en casi todos los programas de dibujo y diseño).

Así es que voy al lío, que todavía me falta un poquín para que se quede aceptable.

Stay tuned!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s