Ayuda, necesito borrar (machacar) con color alpha map_xput....

Started by alicesimu, December 10, 2016, 08:40:19 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

alicesimu

Buenass

alguien sabe como se puede borrar de una zona de un MAP en memoria.
por ejemplo

un recuadro de 10x10 en las cordenadas 120x240.

deseo que se borre desde: 120-130 x 240-250, en color alpha
es decir que me pinte rgba(0,0,0,0); (NO es pintar negro, es pintar Transparente a 100%)

Si el original MAP contiene en esa zona colores y alpha variados RGBA, diferentes... en esos pixeles
la idea es pintar ese recuadro como color Transparente al 100%. no digo pintar NEGRO opaco!

Seria como la goma de borrar del Photoshop.

la idea es usar map_xput y cosas similares
o podria usar map_put_pixel... pero claro pixel a pixel....

Drumpi

Bueno, RGBA(0,0,0,0) es el color 0. Si lo que quieres es mantener los valores RGB y sólo modificar el alpha tendrías que obtener el pixel (MAP_GET_PIXEL), luego sus valores RGBA (creo que es con GET_RGBA), y hacer MAP_PUT_PIXEL(RGBA(r,g,b,0)).

Pero si es sólo borrar un cadrado del mapa, es decir, dejarlo de color transparente total (o el valo 0, como he dicho):
drawing_map(tu_file, tu_map);  //Recuerda que los mapas cargados sin FPG son el file = 0;
drawing_color(0);
draw_box(120, 240, 130, 250);


Es lo más sencillo.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

Eso que pides es imposible si la información de pixel anterior no fue guardada, si la tienes guardada sería simplemente hacer un map_xput de ella.

Lo que tu pides de revelar la información de pixel que hay detrás de éste como hace la goma de borrar de photoshop es porque es porque estarás usando multicapas y deja ver la capa de atrás.

Para simular eso en bennu, necesitarias dos processos superpuestos cada uno con su graph.

Y sería tan facil como ir poniendo su valor de pixel alpha a 0, eso lo haría transparente y verías el pixel del proceso de atrás, simulando lo que hace la goma de borrar. tal como dice drumpi MAP_PUT_PIXEL(RGBA(r,g,b,0)).
y volviendo a cambiar su valor a 255 volverías  hacer visible el color del proceso que está encima y ocultaste.

Ahora bien, si lo que quieres borrar como lo hace photoshop en una capa y en modo rgb. tendrías que poner a cero el alpha del justo encima de donde borras, los pixeles adyacentes al 67, los adyacentes a estos ultimos a 127, y así sucesivamente hasta el ancho del borrador.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

alicesimu

Quote from: Drumpi on December 10, 2016, 08:50:46 PM
Pero si es sólo borrar un cadrado del mapa, es decir, dejarlo de color transparente total (o el valo 0, como he dicho):
drawing_map(tu_file, tu_map);  //Recuerda que los mapas cargados sin FPG son el file = 0;
drawing_color(0);
draw_box(120, 240, 130, 250);


Es lo más sencillo.
Concretamente eso!!

aun que lo hice en plan chupuzilla:

x=150;
y=160;
from xf=0 to 31;
from yf=0 to 31;
map_put_pixel(0,MAP_PARED,X+xf,Y+yf,0);//BORRAMOS
end
end

Esto borra por completo un cuadrado de 32x32 en las cordenadas x,y del punto de ese MAP_PARED.

El tuyo borra un MAP como hace el mio?

Drumpi

¡Claro! para eso es la linea DRAWING_MAP.
Recuerda que es recomendable invocar esta función antes de los draw_* porque las funciones draw_* no tienen parámetros para especificar el mapa, usan una "variable global interna" del sistema para saber dónde pintarse.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)