мышь следовала за рисованием в C # - PullRequest
2 голосов
/ 10 июня 2009

Я хочу сделать общую чертежную доску на C #. Это означает, что два человека, подключенные через TCP-соединение, могут рисовать на этой плате. Идея (пока) в том, что люди могут нажимать на экран и рисовать. Как вы думаете, это лучший метод для этого?
Достаточно просто нарисовать точку, когда пользователь нажимает на определенное место, но становится немного сложнее, когда пользователь перетаскивает мышь, где вам нужно провести линию между последней точкой и текущей. Кроме того, это не очень хорошо работает, поэтому я рисую точку, где линия начинает немного улучшаться, но это не так хорошо.

Наконец, мне нужно также отправить это по TCP, поэтому мне нужно различать их. Я надеялся, что смогу просто отправить точки и заставить их нарисовать их на другой стороне, но, похоже, это не сработает. Любые идеи, кроме как отправка типа?

рисунок http://img193.imageshack.us/img193/9697/drawingw.png

EDIT:
Хорошо, я собираюсь использовать интерфейс IDrawingArgument, который имеет Dispatch (myForm) и в основном выполняет двойную диспетчеризацию, поэтому он решает проблему TCP (собирается сериализовать / десериализовать ее). Линии все еще немного громоздки.

Ответы [ 2 ]

3 голосов
/ 10 июня 2009

Один маленький совет ... о вашем событии перемещения мыши. сохраняйте флаг, который не вызовет событие снова, пока последнее событие, которое установит флаг, не отключит его. i.e.:

bool isDrawing = false;
public void myCanvas_MouseMove(object sender, EventArgs e)
{
     if(!isDrawing)
     {
         isDrawing = true;
         // Do drawing here
         isDrawing = false;
     }
}

Это очень помогло мне при рисовании в событии mousemove.

0 голосов
/ 10 июня 2009

Dots: (Х, у), (х2, у2), (х3, у3) * * тысяча один

Линия: (Х, у, х2, у2), (х3, у3, х4, у4)

Таким образом, формат представляет собой список кортежей. Кортежи размера 4 - это линии, размера 2 - это точки. Обратите внимание, что если ваша система усложняется, вы действительно пожалеете, что не сделали что-то вроде:

Dots: Д (х, у), D (х2, у2), D (х3, у3)

Линия: Л (х, у, х2, у2), L (х3, у3, х4, у4)

...