java - 使用什么工具包可以在绘画中制作多个线程? Swing、GWT、FX、Qt 还是什么?

标签 java user-interface multithreading paint

我想编写一个 multipaint 应用程序 - 一个允许来自不同计算机的用户同时在一个图像上绘图的程序。我应该使用什么工具包?

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

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

( http://doc.trolltech.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi-threads.html#creating-a-thread )

最佳答案

您最有经验的工具包。

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

  • 你不需要“多线程”绘画,因为用户会看到看似平行的绘画效果:相反
  • 使用事件。发送事件,例如“绘制曲线”或“绘制直线”,以通知所有参与者绘图更新。
  • 使用帧同步。每个参与者都保留一堆事件,这些事件按发生时间排序,并由用户生成的事件(如“画这个”和“画那个”)更新。每隔一段时间,客户端会将其事件堆栈发送给其他参与者。
  • 实现您自己的“垃圾收集”:如果某个事件由于其他事件与它重叠而未修改任何像素,则可以将其丢弃(从堆栈中移除)以提高同步帧和绘图的性能。
  • 实现事件折叠。例如 4 个事件:“从 x 到 y 画线”、“从 y 到 z 画线”等可以折叠成类似路径的形状。

客户端只需监听事件并将它们添加到它的本地框架,绘制共享框架(通过每次绘制,在空 Canvas 上重绘所有事件),通过网络将事件发送给其他客户端并监听对于来自其他客户端的事件和关键帧。

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

不过,这是一个相当#complex #dynamic#system。

关于java - 使用什么工具包可以在绘画中制作多个线程? Swing、GWT、FX、Qt 还是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969109/

相关文章:

Java 矩阵处理时间

java - 通过类扩展和返回值

php - jquery ui 对话框和加载外部内容

java - 基于 Java 的应用程序的 GUI 测试工具

java - 控制自定义 Synth 外观和感觉中复选框的布局

ios - 在后台快速启动线程

c++ - 在另一个线程中分配唯一 ptr 的错误

java - TextView 和缩放

c# - 多线程锁和监视器类不起作用

java - Numberformat 似乎忽略了 Android 中的小数位 - 但仅适用于美元且仅适用于德国