Java 在绘画中使用什么工具来制作一条以上的线?Swing,GWT,FX,Qt还是什么?

Java 在绘画中使用什么工具来制作一条以上的线?Swing,GWT,FX,Qt还是什么?,java,user-interface,multithreading,paint,Java,User Interface,Multithreading,Paint,我想写一个多点应用程序——一个让来自不同计算机的用户同时在一幅图像上画图的程序。我应该使用什么工具包 我已经发现Jambi在这种情况下并不合适,因为: 任意数量的线程可以在任意给定的时间进行绘制,但是在给定的绘制设备上一次只能绘制一个线程。换句话说,如果两个线程分别绘制在单独的QImage上,则两个线程可以同时绘制,但这两个线程不能同时绘制在同一QImage上。 ()您最有经验的工具包。 只要正确设计应用程序,就可以在任何工具包中实现这一点;例如: 您将不需要“多线程”绘制,因为用户将看到看似

我想写一个多点应用程序——一个让来自不同计算机的用户同时在一幅图像上画图的程序。我应该使用什么工具包

我已经发现Jambi在这种情况下并不合适,因为:

任意数量的线程可以在任意给定的时间进行绘制,但是在给定的绘制设备上一次只能绘制一个线程。换句话说,如果两个线程分别绘制在单独的QImage上,则两个线程可以同时绘制,但这两个线程不能同时绘制在同一QImage上。


()

您最有经验的工具包。

只要正确设计应用程序,就可以在任何工具包中实现这一点;例如:

  • 您将不需要“多线程”绘制,因为用户将看到看似平行的绘制效果:相反
  • 使用事件。发送事件,如“绘制曲线”或“绘制直线”,通知所有参与者图形的更新
  • 使用帧同步。每个参与者都保存一个事件堆栈,这些事件按发生时间排序,由用户生成的事件(如“绘制此”和“绘制那个”)更新。客户机将定期向其他参与者发送其事件堆栈
  • 实现您自己的“垃圾收集”:如果某个事件由于其他事件重叠而未修改任何像素,则可以将其丢弃(从堆栈中删除),以提高同步帧和图形的性能
  • 实现事件折叠。例如,“从x到y画线”、“从y到z画线”等4个事件可以折叠成类似路径的形状
客户端只需侦听事件并将其添加到其本地帧,绘制共享帧(每次在空画布上绘制、重画所有事件),通过网络将事件发送给其他客户端,并侦听来自其他客户端的事件和关键帧

绘图是单线程的:它将收集所有堆栈(本地和每个参与者),在出现时对其进行排序,并按该顺序绘制。所有提到的框架都支持这一点

不过,这是一个相当复杂的动态系统