Я хочу сделать общую чертежную доску на С#. Это означает, что два человека, подключенные через TCP-соединение, могут использовать эту плату. Идея (на данный момент) заключается в том, что люди могут щелкнуть по экрану и рисовать. Как вы думаете, лучший метод для этого?
Достаточно легко нарисовать точку, когда пользователь нажимает на определенное место, но становится немного сложнее, когда пользователь тащит мышь, где вам нужно провести линию между последней точкой и текущим. Кроме того, это не работает так хорошо, поэтому я рисую точку, где линия начинает немного улучшать, но это не так хорошо.
Наконец, мне нужно также отправить это через TCP, поэтому мне нужно провести различие между ними. Я надеялся, что могу просто отправить очки и нарисовать их с другой стороны, но похоже, что это не сработает. Любые идеи, кроме отправки типа?
рисунок http://img193.imageshack.us/img193/9697/drawingw.png
EDIT:
хорошо, я собираюсь с интерфейсом IDrawingArgument, который имеет Dispatch (myForm), и в основном делает двойную отправку, поэтому он решает проблему TCP (собирается сериализовать/десериализовать ее).
Строки все еще немного громоздки.
Один маленький совет... на вашем мероприятии mousemove. держите флаг, который не будет запускать событие еще до того, как последнее событие, которое установит флаг, отключит его. то есть:.
bool isDrawing = false;
public void myCanvas_MouseMove(object sender, EventArgs e)
{
if(!isDrawing)
{
isDrawing = true;
// Do drawing here
isDrawing = false;
}
}
Это очень помогло мне при рисовании в событии mousemove.
Точки: (Х, у), (х2, у2), (х3, у3)
Линия: (Х, у, х2, у2), (х3, у3, х4, у4)
Таким образом, формат представляет собой список кортежей. Кортежи размера 4 - это линии, размер 2 - это точки. Обратите внимание, что если ваша система усложняется, вы действительно сожалеете, что не просто делаете что-то вроде:
Точки: Д (х, у), D (х2, у2), D (х3, у3)
Линия: Л (х, у, х2, у2), L (х3, у3, х4, у4)