tôi sẽ rất cảm kích nếu bạn được tư vấn và giúp đỡ:SWT: Làm thế nào để “làm” một Widget trong nền/thành offscreenbuffer
Làm thế nào tôi có thể làm cho một SWT Widget/Component trong BỐI CẢNH (? Offscreenbuffer) và có được “sơn” pixel được vẽ bởi các widget/Component để lưu chúng trên ổ cứng:
những gì tôi đang có là:
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);
//...
vấn đề: Chụp ảnh chụp màn hình bản thân của vỏ/widget hoạt động, nhưng nó sẽ mở một Windo mới w trong Thanh tác vụ. Đó là điều tôi KHÔNG muốn.
Điều tôi muốn đạt được là: Tôi muốn chạy ứng dụng này hoàn toàn dưới nền dưới dạng "ứng dụng máy chủ" (ví dụ: nhúng và gọi điều này vào một servlet). Vì vậy, MyWidgetComponent nên được render pixel bằng pixel hoàn toàn trong offscreenbuffer và sau này tôi lấy các pixel và lưu chúng vào đĩa cứng hoặc trả về trực tiếp widget được hiển thị như là một hình ảnh như là kết quả của yêu cầu servlet. (Tôi không muốn bật bất kỳ cửa sổ nào trong môi trường máy chủ, trong trường hợp này có thể là một máy chủ cửa sổ ...).
Làm cách nào tôi có thể đạt được điều này. Tôi đã tìm kiếm rất nhiều nhưng havent tìm thấy bất cứ điều gì hữu ích.
Cảm ơn bạn rất nhiều !! Jan
Xin chào Paul, cảm ơn bạn rất nhiều vì câu trả lời của bạn !! Câu trả lời của bạn rất thú vị để đọc. Tôi đã thực hiện một trải nghiệm tương tự (có thể là hiển nhiên đối với các chuyên gia, nhưng không phải tôi) khiến cho việc "dựng hình" trở nên rắc rối hơn: Như đã mô tả ở trên, một cửa sổ sẽ luôn bật lên, nhưng không chỉ cửa sổ này bật lên là "VISIBLE/MAXIMIZED" và không được phép "thu nhỏ" (để chỉ có biểu tượng khay/thanh tác vụ hiển thị), như ở trạng thái thu nhỏ, tôi cũng nhận được một "màn hình trắng" được hiển thị. Vì vậy, điều này có nghĩa là cửa sổ phải được hiển thị đầy đủ những gì thậm chí còn tồi tệ hơn trong một môi trường serverside. – jan
Có vẻ như đó là từ cuối cùng, theo như SWT có liên quan. Lưu ý rằng bạn có thể giải quyết vấn đề này bằng cách sử dụng JNI/JNA bằng cách truy cập các API Windows hoặc gọi các phương thức gốc của Mac. Không phải là rất quyến rũ, nhưng nó chỉ có thể nhận được công việc làm. –
Điều này sẽ là một lỗi được đưa ra chống lại SWT. Tôi chỉ dành 5 giờ để dành thời gian cho vấn đề này, và có cùng một vấn đề. – Phil