Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Marth en Mayo 07, 2022, 11:36:26 PM

Título: Conocel el color y el alfa de un color de un sprite
Publicado por: Marth en Mayo 07, 2022, 11:36:26 PM
Estoy interesado en coger un pixel de un sprite y sacarle el "image_blend" y el "image_alpha" de dicho pixel.
Hay funciones para sacar valores como el ancho y el alto del sprite y hay funciones para manejar de varias formas el sprite, pero no he encontrado nada sobre coger un sprite, sacar un pixel y sacarle estos valores.
Título: Re: Conocel el color y el alfa de un color de un sprite
Publicado por: Alice en Mayo 08, 2022, 08:59:34 PM
tienes que usar draw_getpixel_ext()
y luego usar los operadores de bitwise para ir "moviendote" para obtener el alpha y los colores

col = draw_getpixel_ext(mouse_x, mouse_y);
alpha = (col >> 24) & 255;
blue = (col >> 16) & 255;
green = (col >> 8) & 255;
red = col & 255;
Título: Re: Conocel el color y el alfa de un color de un sprite
Publicado por: Marth en Mayo 08, 2022, 11:47:17 PM
Es poco eficiente, y me causa errores debido a la pantalla completa.
Encontré otro método que es más eficiente:

var buffer=buffer_create(4*sprite_get_width(sprite)*sprite_get_height(sprite),buffer_fixed,1)
buffer_get_surface(buffer,surface,0)
surface_free(surface)
var num=buffer_peek(buffer,4*(mouse_x+mouse_y*sprite_get_width(sprite)),buffer_u32)
var alfa=((num>>24)&255)/255
var color=make_color_rgb(num&255,(num>>8)&255,(num>>16)&255)
buffer_delete(buffer)

Sin embargo, la variable image_alpha me genera errores. Por ejemplo, si el valor image_alpha debería ser 1, en su lugar lo pone como 255.
Probé a dividir entre 255, pero tampoco funciona, porque si mi pixel tiene alfa menor que uno lo devuelve con un alfa inferior al que debería.
Puede que este error se deba a los decimales...