我正在使用像alljoyn framework这样的chalkboard在Android上开发一个点对点协作绘图应用。
我能够在同伴之间实现协作聊天。现在我想实现画布共享,在一个画布中,每个人都可以实时绘制。
我如何从canvas开始,它的数据结构是什么,是否需要处理任何特定的图像对象,我是否需要使用json,我是否必须将像素值存储在2D数组中。
我只需要一个黑色&白色屏幕与白色背景和黑色作为绘图部分。
我只是想知道它背后的方法。任何参考都会有所帮助。
感谢...
答案 0 :(得分:1)
Canvas实际上是一个位图。
使用绘图命令在位图上添加/更改像素。
要进行协作绘制,您不会在每次更改时共享所有用户之间的像素值。
这会在序列化,传输和反序列化方面造成瓶颈。工作太慢了。
相反,每次更改都要在所有用户之间共享最新的绘图命令。
如果用户#1从[20,20]到[100,100]绘制一条线,只需序列化该线条并将其与所有用户共享。
序列化可能看起来像这样:" L 20,20 100,100"。
如果您想要一个高效的序列化结构,请查看SVG执行路径数据的方式 - 非常有效地传输给许多用户。
所有其他用户都会侦听传入的命令。收到后,他们会反序列化用户#1的行,并自动在自己的画布上绘制。