簡體   English   中英

在C#中同步繪制?

[英]synchronised paint in C#?

我正在考慮編寫一個小程序,其中兩個用戶將擁有一個繪圖畫布,並且他們都可以在其上通過Internet進行繪制,並且圖像將被同步。 如果我畫一條線..另一台計算機上的用戶將立即看到它。

我希望你們中的一些人可以提供任何建議或文檔,或者對我如何實現這樣的建議。

就個人而言,我曾經考慮過使用sql服務器,找到一種繪制和保存圖像的方法,然后將其轉換為字節,然后將其保存在數據庫中並不斷下載圖像,但這可能會殺死服務器。

順便說一句...這是一個Windows窗體應用程序

您將沒有足夠的帶寬來快速傳輸整個圖像。

您根本不希望傳輸圖像,例如,如果您在另一個人同時在一個區域上繪制筆觸,則將無法調和同一區域中的兩個筆畫。

最好的辦法是定義工具並捕獲用戶輸入,然后使用時間戳傳遞用戶操作,以跟蹤誰先執行操作。 例如,如果您使用鋼筆工具,並將其拖到屏幕上以創建一條線,則需要傳輸以下信息:

  • 用戶
  • 日期時間戳
  • 工具(筆/畫筆/等)
  • 顏色
  • 從開始到結束繪制的點陣列

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

如果您要執行這樣的操作,請確保先執行客戶端/單個用戶代碼。 如果您還沒有畫布繪圖應用程序,請不要擅自使用網絡部分。 只需按照可以將每個操作簡化為數據的方式進行設計即可,如上所述。 因此,您將擁有傳輸和重現動作所需的數據。

用於Node.js的 Socket.IO將是一個很好的解決方案。 使用Socket.IO,無需輪詢數據庫或以任何形式持久化數據。 每次用戶繪制內容時,您都希望將畫布數據發送到服務器,然后服務器將立即將其發送到客戶端。

對於繪圖區域,您要使用HTML5畫布。 這里有一個不錯的教程介紹如何啟動並運行基本的畫布。

如果您使用的是ASP.NET MVC,那么Jon Gallaway會在他的博客上發布有關如何啟動和運行Node的文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM