gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 06:21:11 25 4
gpt4 key购买 nike

我想编写一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com