有沒有辦法在Java中使用Graphics2D API在遠程java進程的畫面上繪製? 任何API來傳輸和反序列化繪畫說明?Java Graphics2D流?
或者我必須使用我自己的「api call」序列化/反序列化機制?
有沒有辦法在Java中使用Graphics2D API在遠程java進程的畫面上繪製? 任何API來傳輸和反序列化繪畫說明?Java Graphics2D流?
或者我必須使用我自己的「api call」序列化/反序列化機制?
這真的取決於你處理的媒體種類。如果你正在播放視頻,你使用的編解碼器可能有API來做到這一點,但你需要四處搜索找出。 Graphics2D實際上是用於更原始的繪畫操作,比如繪製形狀,渲染文本以及將圖像數據從一個地方複製到另一個地方。
如果您正在編寫自己的流式算法,那麼它可以像定義一個滿足您需要的PaintEvent
類一樣簡單。 PaintEvent
類的想法是它包含了要做什麼的說明。例如,如果您在遠程系統上繪製一個帶有無線電50的圓,則不是通過網絡傳輸像素數據,而是傳輸一條基本上說「跨半徑爲50的圓」的消息,並讓客戶把它放在一邊。
一類的paintEvent,我會想,會是這個樣子:
public class PaintEvent {
public static final int OPER_DRAW_CIRCLE = 0;
public static final int OPER_DRAW_RECT = 1;
public static final int OPER_DRAW_TEXT = 2;
...etc...
int paintOperationID;
int[] paintDetails; // where 'paintDetails' contains data such as a circle's radius, a rectangle's dimensions, the (x, y) location where to render text, etc.
java.awt.Color renderColor;
String text;
public PaintEvent(int paintOperationID, int[] paintDetails, Color renderColor, String text) {
...
}
}
所以,這取決於什麼paintOperationID
是,它會在paintDetails
對待數據不同。除非是OPER_DRAW_TEXT
操作,否則text
字段將被忽略。
無論如何,這是一種方法。然後你就可以設計一個通信協議,從一個地方獲取數據。
謝謝,我想過這種情況下,如果沒有任何其他解決方案。這個問題的解決方案非常簡單,我認爲任何人都已經準備好使用 - Graphics2d代理,IO /流,消息處理程序,連接到另一個graphics2d。 –
但似乎我應該自己實現消息處理程序 –
這就是我會推薦的。它不應該花很長時間,我懷疑如果其他人做了它,那是他們會發布的東西。對於很多2D圖形,Java2D並不是一個使用頻繁的庫。從這裏開始,Java中的2D圖形變得非常專業化(即遊戲圖形),並且擁有專用於應用程序空間的庫。 – jefflunt