C#中的同步绘制

本文关键字:绘制 同步 | 更新日期: 2023-09-27 18:21:34

我正在考虑制作一个小程序,在这个程序中,两个用户将有一个绘图画布,他们可以在上面通过互联网进行绘制,并且图像将同步。如果我画一条线。。另一台计算机上的用户会立即看到它。

我希望你们中的一些人能对我如何实现这样的目标提出任何建议或文件,或建议。

就我个人而言。。我想使用sql服务器,找到一种绘制和保存图像的方法。。并将其转换为字节。。将其保存在数据库中并不断下载映像,但这可能会导致服务器崩溃。

顺便说一句。。。这是一个windows窗体应用程序

C#中的同步绘制

您将没有那么快的带宽来传输整个图像。

你根本不想传输图像,因为例如,如果你在另一个人同时在一个区域上绘制笔划,你将无法调和同一区域中的两个绘制笔划。

最好的做法是定义工具并捕获用户输入,然后用时间戳传输用户操作,以跟踪谁先做了什么。例如,如果你使用钢笔工具,并在屏幕上拖动它来创建一条线,你会想要传输信息,比如:

  • 用户
  • 日期时间戳
  • 工具(钢笔/刷子等)
  • 颜色
  • 从开始绘制到停止绘制的点阵列

然后可以在其他客户端上重新创建此操作。

如果你想做这样的事情,一定要先做客户端/单用户代码。如果你还没有一个画布绘制应用程序,不要在网络部分做得太过火。只要以一种方式设计它,每个动作都可以简化为如上所示的数据。因此,您将拥有传输和再现动作所需的数据。

Node.js的Socket.IO将是一个很好的解决方案。有了Socket.IO,就不需要轮询数据库或以任何形式保存数据。每次用户绘制东西时,你都希望将画布数据发送到服务器,然后服务器会立即将其发送到客户端。

对于绘图区域,您希望使用HTML5画布。这里有一个很好的教程,介绍如何建立并运行一个基本的绘图画布。

如果您使用的是ASP.NET MVC,Jon Gallaway在他的博客上发布了一篇关于使用Node的文章。