画面上のコントロールの絶対位置を取得しようとしています。2 台のモニターを使用していますが、結果はあまり良くありません...
私がやっていることは、別のフォームを開いて画像をキャプチャし、この画像をメイン フォームに渡してキャプチャ フォームを閉じることです。次に、写真がキャプチャされたのと同じ場所にメイン フォームが表示されるようにします。例として私がやろうとしていることの要点をつかむには、Windows で Snipping Tool を開き、切り取りをキャプチャします。画像が撮影された場所にウィンドウが表示されます。
これは、これを行うために使用している現在のコードです。
Location = new Point(Cursor.Position.X - CaptureBox.Width - CapturePanel.Location.X - CaptureBox.Location.X - 8, Cursor.Position.Y - CaptureBox.Height - CapturePanel.Location.Y - CaptureBox.Location.Y - 30);
CapturePanel には、画像を格納する CaptureBox コントロールが含まれています。また、フォームの境界線とタイトル バーを補正するために、X 位置から 8、Y 位置から 30 を使用していますが、これに関する唯一の問題は、一部のコンピューターが別のウィンドウ スタイルを使用し、これらの数値が変わることです。
ウィンドウの境界線とタイトルの幅/高さを取得するために使用できる方法があれば、それは素晴らしいことです。
編集
これに対する解決策は次のとおりです。
Location = new Point(
Cursor.Position.X -
CaptureBox.Width -
CapturePanel.Location.X -
CaptureBox.Location.X -
SystemInformation.HorizontalResizeBorderThickness,
Cursor.Position.Y -
CaptureBox.Height -
CapturePanel.Location.Y -
CaptureBox.Location.Y -
SystemInformation.CaptionHeight -
SystemInformation.VerticalResizeBorderThickness
);
キングキングの助けを借りて、SystemInformation を私に指摘してくれました。