Foro sobre Java SE > Java colores
No probé y no tengo ganas de abrir el Eclipse para probar jajajaj, pero se me ocurre algo asi como hacer un array de colores y luego, cuando el puntero del mouse esté sobre alguna posicion de la pantalla, asignarle una funcion que al hacer un onMouse no me acuerdo cual era el que pasabas por encima de algo y se activaba, y esa funcion que haga una comparacion del getColor (en hexadecimal) sobre el que esta posicionado, y luego compararlo con cada uno de los colores del array cargado de colores, luego bastará con hacer lo que quieras con ese color.
Buenas amigo el evento al que te refieres es el mouse entered y mouse exited... pero lo que quiero hacer es que saque los colores sin tener que pasarle el mouse por encima es decir de manera automática ^^
AHHHHH, bueno asi mas imposible todavia la veo jaja, porque suponte que tenes un fondo con degradados, que codigo podria llegar a obtenerte los miles de millones de colores en hexadecimal... lo unico que se me ocurre es poder captar los colores, si son exactos como RED BLACK WHITE YELLOW, y que esten sectorizados en paneles... si estan en una pantalla sin nada todos juntos, lo veo imposible, ni con coordenadas xy seria posible (es posible, pero seria un metodo medio loco, que por cada pixel que encuentre que tome el color hexadecimal y lo guarde, imaginate lo que seria eso)
Buenas,
Yo la única posibilidad que veo es que captures la pantalla y recorras en memoria la matriz de píxeles hasta encontrar un color coincidente. Una vez localizado, solo quedaría mover el puntero a las coordenadas correspondientes.
Un saludo
Si al final are lo de sacar captura a la pantalla con el metodo rectangle... Gracias por sus respuesta :)
Otra cosa que quera preguntar ( de la cual si no tengo idea alguna xD ) como se hace para minimizar y maximizar una aplicación echa en java con el teclado ? por ejemplo cuando le den 'R' se comienza a ejecutar y se minimiza y mientras se este ejecutando y este minimizada si le dan 'S' se detenga y se maximice ?
Guenas.
Con java podrías capturar el evento keyPressed, pero solo funciona si la aplicación tiene el foco. No creo que sea esto lo que tu deseas.
Un saludo,
Paposo
Buenas,
Efectivamente la JVM solo te permite capturar el teclado cuando la app tiene el foco.
La unica forma de conseguirlo seria capturando nativamente (en c, por ejemplo) los eventos del SO y enlazarlos con tu app java mediante JNI. Yo lo veo complejo...
De cualquier forma son un poco 'curiosos' los requisitos de tu aplicacion no? Porque minimizar cuando ejecuta y parar cuando se muestra?
Un saludo
Anda mira, tienes suerte. Ya hay una libreria que lo hace:
https://code.google.com/p/jnativehook/
Un saludo,
Coño!
A triblack no se si le interesa, pero a mi si :)
Gracias
Paposo
Buenas si eso fue lo primero que intente jaja y funciona hasta la parte de minimizarlo xD
UnoPorAhi
Buenas lo que quiero hacer es un programa algo parecido al "Mouse recorder" pero no lo quiero limitar a una cierta cantidad de intentos, si no que cuando uno desee lo pueda detener y para eso necesito detenerlo con una tecla y este se encontrara minimizado
Ok, pues lo dicho, con esa libreria entiendo que podrias hacer lo que comentas de minimizar. Aqui tienes unos ejemplos de uso: https://code.google.com/p/jnativehook/wiki/examples
Ese software lo vas a hacer open source? Si es asi, cuando lo termines si cuelgas el proyecto avisanos para echarle un vistazo, porque parece interesante.
@Paposo me alegro de que te sirva :-)
Un saludo
UnoPorAhi pff gracias amigo es lo que necesitaba ^^ ... y sobre el código si claro aunque aun sigo con el problema que tenia antes sobre captar los colores de la imagen, el metodo del Rectangle con el bufer me funciono pero es algo lento ya que es una imagen 800 * 600 y tarda mucho en recorrerla pixel por pixel
Bueno, es normal que la operation lleve tiempo...
Lo que si he visto es que usar getRaster es mucho mas rapido (hasta 16 veces) que getRGB a la hora de recorrer lo pixeles:
http://stackoverflow.com/questions/6524196/java-get-pixel-array-from-image
Con que metodo lo estas haciendo?
Un saludo
Buenas amigo estaba utilizando el getRGB ya me he puesto a ver lo del getRaster pero ahi algo que no entiendo del codigo
argb += -16777216; // 255 alpha
argb += ((int) pixels[pixel] & 0xff); // blue
argb += (((int) pixels[pixel + 1] & 0xff) << 8); // green
argb += (((int) pixels[pixel + 2] & 0xff) << 16); // red
eso lo mete en la matriz pero si muestras la matriz el numero que da no es una combinación de color ya que los da en negativos
Buenas...ahí alguna manera de hacer que java detecte de manera automática los colores de la pantalla es decir utilizando la clase Robot que mueva el mouse hasta el color que yo le indique por ejemplo que mueva el mouse hacia donde este el color negro y el de manera automática busque el negro y ponga el mouse sobre el...nose si me explique bien de antemano muchas gracias por la respuesta :)