0

私はc#でリモートデスクトップアプリを開発しようとしています。だから私は画像ボックスに基づくマウス座標計算に関していくつか質問があります

  1. ピクチャーボックスがあり、C#でそのピクチャーボックス上でマウスを動かすときにマウス座標をキャプチャしたいとしますか?

  2. 画像ボックスの場所(200、300)をクリックすると。
    次に、画像ボックスのプログラムによる解像度を決定し、その解像度に基づいてその(200,300)座標を変換するにはどうすればよいですか。

  3. (x、y)座標を他のマシンに送信し、そのPCの解像度が1024x768の場合、そのPCの解像度に従って(x、y)を変換するために使用する必要があるロジック

可能であれば、私の質問の小さなサンプルコードを手伝ってください。ありがとう

4

3 に答える 3

2

これは些細な質問のように聞こえます。宿題に関連するものである場合は、タグを追加してhomeworkください。

int remote_x = local_x * remote_width / local_width;
int remote_y = local_y * remote_height / local_height;

画像ボックス(local_widthおよび)の寸法は、たとえばおよびlocal_heightを使用して決定できます。カーソルは調整され、要求されるか、イベントデータ(イベントなど)の一部になります。pictureBox.WidthpictureBox.Heightlocal_xlocal_yMouseMove

于 2012-06-22T08:40:51.367 に答える
1

シンプルで最も簡単な方法は、座標を正規化された形式(0から1の範囲)に変換することです。次に、これらの正規化された座標を使用して、別の解像度でのmousePositionを計算できます。このようにして、デバイスは他のデバイスの解像度を知る必要がありません。

それで:

//First Normalize the clickPosition using the current resolution
//clickPos(200,300) and resolution(800,600) => normalized(0.25,0.5)
var normalized = clickPos/resolution;

//Now you can send this information to the other device
//The other device uses the normalized parameter to calculate the mouseClick with his  resolution
//normalized(0.25,0.5) and otherResolution(1280,720) => otherDeviceClickPos(320, 360)
var otherDeviceClickPos = normalized * otherResolution;
于 2012-06-22T09:18:16.740 に答える
0

リモート画面の解像度がわかっていて、画像ボックスのサイズがわかっている場合は、比率を整数に丸めただけです。

于 2012-06-22T08:43:47.253 に答える