Buenas, estoy intentando localizar un error que me ocurre sólo con Bennu, pienso que podria ser el new_map, o sea poniendo un:
new_map(scr_width, scr_height, 16);
con
const
scr_width = 320;
scr_height = 200;
la imagen me sale pintada sólo hasta la mitad de la pantalla, si hago por ejemplo un
new_map(scr_width - 100, scr_height, 16); esta se desloca correctamente hacia la izquierda, pero si hago un +100, esta no se desloca hacia la derecha. Podrias revisar esta funcion interna en Bennu y sus parametros a ver si lo esta haciendo todo bien (que no sea un problema como tenias con el map_block_copy cuando pintabas algo fuera de la zona visible...).
Grácias.
Me consta que esa función va bien, salvo que se haya metido algún cambio desde la r131 a dicha función.
Mira a ver si es cosa del punto de control o que estás dibujando parte de la imagen o símplemente fuera de ella. Prueba a crear el mapa más grande, o a poner un fondo de color y usar el flag NO_COLOR_KEY para ver dónde se dibuja. A mi me pasa a veces.
Puede ser problema del punto de control como dice Drumpi... Quizás se esté posicionando respecto del punto superior izquierdo del gráfico y no respecto del centro... Prueba a dibujar la ventana de ejecución más grande y comprobar lo que pasa, es una dll bastante antigua, no creo que haya bug en ella.
Perdonad pero no he entendido nada :D
Todo map tiene un punto de control que indica el punto de referencia respecto del cual se posiciona.
Si has trabajado con FPGs te habrás fijado que los mapas se posicionan respecto de su centro.
A lo que me refiero, no sé dónde fija el punto de control un mapa creado con new_map. Ten en cuenta que a la hora de posicionar un mapa en la posición x=0 , y=0 cambia mucho según donde esté el punto de control:
- Si el punto de control está en el centro del mapa sólo verías la cuarta parte inferior derecha del mapa, el resto "saldría" de la pantalla.
- Si el punto de control está en la esquina superior izquierda del mapa entonces verías el mapa completo, ya que colgaría respecto de ese punto hacia abajo a la derecha.
¿Semen tiende?
Pero tu controlas el punto de control ? Por lo que veo, me parece que lo pone en x=0, y=0 y aparte de esto se puede deslocar alterando los valores de height, width, pero no hasta rellenar la pantalla hacia la derecha.
Aún no tengo claro donde este el problema pero me parece que es aqui.
O como cambias tu el punto de control ?
Para cambiar el punto de control se usa set_point (file, graph, x, y);
Otra manera de ver si es lo que dicen los compañeros es probar a poner el grafico en medio de la pantalla con un x=160; y=100;
En teoria cualquiera de las dos cosas funcionara.
Pero el x, y referencia directamente el mapa creado con new_map ? Pensaba que sólo lo hacia para un mapa puesto a pelo por ejemplo con graph=1;.
Voy a probar el set_point que desconocia por completo.
Grácias.
Mr matsusaka se ha confundido:
INT SET_POINT ( INT librería, INT gráfico, INT número, INT x, INT y )
O bien
INT SET_CENTER ( INT librería, INT gráfico, INT x, INT y )
Porque al menos yo no estoy seguro de dónde se establece el centro del mapa con new_map (o no me acuerdo ahora mismo). Lo que tienes que comprobar es:
a) en qué parte de la pantalla está puesto el mapa que has creado.
b) qué parte de la misma ocupa.
Haz pruebas con un mapa pequeño, lo más centrado posible, para ver cómo funciona.
mapas que no tienen puntos de control definido, el centro es el centro del mapa... salvo el caso de capturas de pantalla que se pone automatico en el 0,0.
O sea, este mapa tendria que estar en el centro de pantalla ?
new_map(scr_width, scr_height, 16);
si las coordenadas que pones son x=scr_width/2, y=scr_height/2... entonces si
Para cambiar la x y la y de un mapa puedes asignar el new_map a un graph de un proceso, tal que asi;
graph=new_map(etcetc...);
x=160;
y=100;
creo... ;D
jejeje, eso si que lo sabe free...
Y que use los cursores para desplazarlo por la pantalla, lo mismo se lleva alguna sorpresa ;D
Quote from: SplinterGU on May 12, 2010, 11:00:46 PM
jejeje, eso si que lo sabe free...
Hhahahha.
^
Por cierto sólo he conseguido arreglar el eje X, el Y sigo teniendo problemas, a ver si doy con el clavo...