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字段将被忽略。

无论如何,这是一种方法。然后,您只需围绕此设计通信协议,即可将数据从一个地方传输到另一个地方。

07-28 01:06
查看更多