ben çok takdir ediyorum bir offscreenbuffer içine/arka planda Widget “işlemek” Nasıl senin tavsiye ve yardım:SWT:
nasıl AMAÇ SWT Widget/Bileşen işleyebilen (? Offscreenbuffer) ve kabuk/widget kendisini ekran görüntüsü alma :
ne anda sahip olduğu:
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);
//...
sorun Widget/Bileşeni tarafından çizildi “boyalı” piksel sabitdiskte onları kurtarmak için olsun çalışır, ancak yeni bir Windo açacak Görev çubuğunda w. Bu istemediğim bir şey.
Neyi başarmak istediğim: Bu uygulamayı tamamen arka planda bir “sunucu uygulaması” olarak çalıştırmak istiyorum (örneğin, bu dosyayı bir sunucuya gömün ve buna ekleyin). Bu nedenle, MyWidgetComponent pikselden tamamen kapalı ekran blöfünde piksel olarak oluşturulmalı ve daha sonra pikselleri alıp harddisk'e kaydediyorum ya da rendered widget'ını servlet-isteği sonucu olarak bir görüntü olarak doğrudan döndürüyorum. (Bir sunucu ortamında herhangi bir pencereyi açmak istemiyorum, bu durumda bir windows sunucusu olabilir ...). Bunu başarmak nasıl
. Çok araştırdım ama işe yaramaz bir şey buldum.
Çok teşekkür ederim! Oca
Merhaba Paul, Cevabınız için çok teşekkürler! Cevabınız okumak için çok ilginç. Benzer bir deneyim yaptım (bu uzmanlar için açık olabilir, ama ben değil) "serveride" renderlemeyi daha da sorunlu hale getiriyor: Yukarıda açıklandığı gibi, bir pencere her zaman açılır, ama sadece bu pencere açılır. "VISIBLE/MAXIMIZED" olması ve "simge durumuna küçültülmüş" (yalnızca bir tepsi/görev çubuğu simgesi görüntülenecek şekilde) olmasına izin verilmemesi, simge durumuna küçültülmüş durumda olduğu gibi, bir "beyaz ekran" (screendumped) alır. Yani bu, pencerenin sunucu ortamında daha da kötü olanı tam olarak göstermesi gerektiği anlamına gelir. – jan
Bu, SWT'nin söz konusu olduğu en son kelime. Windows API'lerine erişerek veya Mac yerel yöntemlerini çağırarak JNI/JNA'yı kullanarak bunu aşabileceğinizi unutmayın. Çok çekici değil, ama sadece işi bitirebilir. –
Bu, SWT'ye karşı yükseltilmiş bir hata olmalıdır. Buna sadece 5 saat ayırdım ve aynı problemi yaşadım. – Phil