7

Windows 7 のスニッピング ツールの機能を模倣するアプリケーションを C#.NET で作成しようとしています。アプリケーションが実行されたとき (または特定のキーストロークによって、またはそれを開始することを選択したとき)、ユーザーは四角形を描くことができます。デスクトップの長方形のスナップショットをキャプチャするために、どのウィンドウがフォーカスされていても画面上に表示されます。

特定の長方形を指定してスナップショットを保存するために Graphics.CopyFromScreen() メソッドを使用する方法は既に知っていますが、実際の長方形の選択とそこから境界を取得する方法に困惑しています。

4

2 に答える 2

7

TeboScreen:Code Projectの基本的なC#スクリーンキャプチャアプリケーションは、まさにこれを実行します。

マウスの左ボタンを押したまま、ユーザーは画面のどの部分をキャプチャするかを指定する長方形を描画します。... mouse_Moveイベントは、ユーザーが選択領域を描画するか、ドラッグする(移動する)か、サイズを変更するかを決定するために使用されます。

于 2012-05-08T19:31:49.510 に答える
1

ユーザーは実際には画面上ではなく、キャプチャされた画像上に長方形を描画します。ユーザーがツールを呼び出したときに発生する必要のある一連のイベントは次のとおりです。

  1. デスクトップ全体をキャプチャする
  2. 画面のサイズ(または、おそらくここでこの方法を使用して、すべての画面にまたがるウィンドウ)のフチなしウィンドウを作成し、画面の位置/寸法をそれぞれのスクリーンショットにマップする個別の画像を設定します。
  3. こちらのコードを使用して、ユーザーがフォームでラバーバンドを選択できるようにします。
  4. ユーザーが領域の選択を終了したら、ユーザーが選択したのと同じ大きさのビットマップを作成します。
  5. ユーザーの長方形と画像の交点を見つけます
  6. これらの領域を、手順4で作成したイメージに1つずつコピーします。
  7. この画像を保存します。
  8. 喜びのために泣きます。
于 2012-05-08T19:34:21.830 に答える