Yo agradecería mucho su consejo y ayuda:SWT: Cómo “render” un widget en el fondo/en un offscreenbuffer
¿Cómo puedo hacer que un SWT Widget/Componente en el fondo (? Offscreenbuffer) y obtener los píxeles “pintadas” que fueron dibujadas por el Widget/Componente para guardarlos en el disco duro:
lo que tengo actualmente es:
Display display = new Display();
Shell shell = new Shell(display);
// ...
MyWidgetComponent mwc = new MyWidgetComponent(shell, SWT.BORDER);
shell.open();
Image screenshot = new Image(shell.getDisplay(), shell.getBounds());
GC.copyArea(screenshot, 0, 0);
//...
Problema: Tomando la pantalla en sí de la cáscara/Reproductor funciona, pero se abrirá un nuevo Windo w en la barra de tareas. Eso es algo que NO quiero.
Lo que quiero lograr es: Quiero ejecutar esta aplicación completamente en segundo plano como una "aplicación de servidor" (por ejemplo incrustar y llamar esto a un servlet). Por lo tanto, MyWidgetComponent debe mostrarse píxel a píxel completamente en el buffer externo y luego recuperar los píxeles y guardarlos en el disco duro o devolver directamente el widget representado como una imagen como resultado de la solicitud de servlet. (No quiero ventanas emergentes en un entorno de servidor, en caso de que esto sea un servidor de Windows ...).
¿Cómo puedo lograr esto. Busqué mucho pero no encontré nada útil.
Muchas gracias !! Ene
Hola Paul, muchas gracias por tu respuesta !! Tu respuesta es muy interesante de leer. Hice una experiencia similar (que podría ser obvia para los expertos, pero no para mí) que hace que la representación del "servidor" sea aún más problemática: como se describió anteriormente, siempre aparecerá una ventana, pero no solo aparece esta ventana, sino que también ser "VISIBLE/MAXIMIZADO" y no se puede "minimizar" (de modo que solo se muestre un ícono de bandeja/barra de tareas), como en estado minimizado, también aparece una pantalla "en blanco". Esto significa que la ventana debe mostrarse completamente, lo que es aún peor en un entorno de servidor. – jan
Parece que esa es la última palabra, en lo que se refiere a SWT. Tenga en cuenta que puede evitar esto utilizando JNI/JNA accediendo a las API de Windows o llamando a métodos nativos de Mac. No es muy glamoroso, pero podría hacer bien el trabajo. –
Esto debería ser un error planteado contra SWT. Acabo de pasar 5 horas dedicando tiempo a esto, y tuve el mismo problema. – Phil