Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Conocel el color y el alfa de un color de un sprite  (Leído 350 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Marth

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.


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Alice

  • Habitual
  • *
  • Puntos: 22
  • Mensajes: 17
  • Alice project
    • Ver Perfil
Respuesta #1 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;

 


Desconectado Marth

Respuesta #2 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...