2009-06-10 10 views
2

C#で共有する描画ボードを作りたいと思っています。つまり、TCP接続で接続された2人がこのボードに描画できます。アイデア(今のところ)は、人々がスクリーンをクリックして描くことができるということです。このための最良の方法は何と思いますか?
ユーザーが特定の場所をクリックしたときにドットを描画するのは簡単ですが、ユーザーがマウスをドラッグしたときに少し複雑になります。最後のポイントと現在の間に線を描く必要があります。また、それはうまくいきませんので、私は少し線を改善するためにドットを描きますが、それはあまり良くありません。マウスをC#で描画する

最後に、これもTCP経由で送信する必要があるため、2つを区別する必要があります。私はちょうどポイントを送って、それを反対側に描くことができることを望んだが、うまくいかないようだ。タイプを送信する以外のアイデアはありますか?

drawing http://img193.imageshack.us/img193/9697/drawingw.png

EDIT:それはTCPの問題を解決して
[OK]を、私は(それをデシリアライズ/シリアライズしようとして)、派遣(あるmyFormを)持っているIDrawingArgumentインタフェースと一緒に行く、そして基本的には、二重派遣をしています。
行はまだ少し大きめです。

答えて

3

あなたのmousemoveイベントで少しヒントを...フラグを設定した最後のイベントがオフになるまで、イベントを再開させないフラグを保持します。

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

これは、mousemoveイベントで描画を行う際に多くの助けになりました。

+0

私はそれを行うかもしれないと思います。それは基本的にロックです、私は思いますか? – Nefzen

+0

それを試してみても、違いはありません。 – Nefzen

+0

次回に追加したときに遅延が発生しました...描画イベントに応じて、最後の1秒後に少なくとも5ミリ秒経過していない限り、描画イベントは発生しません。これは図面を円滑にします。 –

0

ドット: (X、Y)、(X2、Y2)、(X3、Y3)

ライン: (X、Y、X2、Y2)、(X3、Y3、X4、Y4)

したがって、形式はタプルのリストです。サイズ4のタプルは線であり、サイズ2のタプルは点である。

ドット:: D(x、y)は、D(X2、Y2)、D(X3、Y3)

お使いのシステムがより複雑になれば、あなたは本当にただのようなものをやっていない後悔ことに注意してください

行: L(x、y、x2、y2)、L(x3​​、y3、x4、y4)