Java中有没有一种方法可以使用Graphics2D API在远程Java进程的屏幕上绘画?
是否有任何API可以流式处理和反序列化绘画指令?
还是我必须使用自己的“ api调用”序列化/反序列化机制?
最佳答案
这确实取决于您要处理的媒体类型。如果您正在播放视频,则您正在使用的编解码器可能是执行此操作的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
字段将被忽略。无论如何,这是一种方法。然后,您只需围绕此设计通信协议,即可将数据从一个地方传输到另一个地方。