私は、ユーザーがリージョンベースのスクリーンショットを取るために使用するWinformsアプリケーションを持っています。私は小さなプレビューペインを持っていたいが、私はそれを行う方法がわからない。これまでは、マウスの動きでビットマップを作り直してみましたが、ちょっと遅すぎて使用できませんでした。だから私は、私は事前定義された画像(画面全体のスクリーンショット)を使用し、あなたが画面にズームを取得するように(あなたが取るしたい正確なピクセルを選択するために、より簡単にスクリーンショット)。私はどのように私はこれを実装することができるか分からない、私はまた、かなり私はあなたが今持っていることを示すように描画にはかなり新しいです。スクリーンショット「プレビュー」ウィンドウを描画する方法は?
private void falseDesktop_MouseMove(object sender, MouseEventArgs e)
{
zoomBox.Image = showZoomBox(e.Location);
zoomBox.Invalidate();
}
private Image showZoomBox(Point curLocation)
{
int x = 0;
int y = 0;
if (curLocation.X - 12 <= 0)
{
x = curLocation.X - 12;
}
else
{
x = curLocation.X;
}
if (curLocation.Y - 11 <= 0)
{
y = curLocation.Y - 11;
}
else
{
y = curLocation.Y;
}
Point start = new Point(curLocation.X - 12, curLocation.Y - 11);
Size size = new Size(24, 22);
Rectangle rect = new Rectangle(start, size);
Image selection = cropImage(falseDesktop.Image, rect);
return selection;
}
private static Image cropImage(Image img, Rectangle cropArea)
{
if (cropArea.Width != 0 && cropArea.Height != 0)
{
Bitmap bmpImage = new Bitmap(img);
Bitmap bmpCrop = bmpImage.Clone(cropArea, bmpImage.PixelFormat);
bmpImage.Dispose();
return (Image)(bmpCrop);
}
return null;
}
EDIT:
この画像の黒い部分がパネルで、もちろんテキストはあなたが画像を見ラベルや領域である:要求されたようにここで
はモックアップであります(スタックオーバーフロー)はpicturebox(zoomBoxと呼ばれる)になります。zoomBoxの上の線はガイドになり、2本の線が交差する部分はマウスの位置になります。これが私の問題を理解するのに役立つよりよい援助であることを願っています。私の問題を説明するのに役立つかもしれない
もう一つは、フォームが実際に「偽デスクトップ」を画面全体に表示されています。 "printscreen"が押されたときにデスクトップのスクリーンショットで画面全体を覆うピクチャボックス。だから、私はこの小さな "プレビューペイン"を、基本的にはマウスがどこにあるかのズームインされた場所にしたい。
あなたの問題は、面白い聞こえるかもしれませんが、コードスニペットから、あなたの意図を把握するのは難しいです。続行する最善の方法は、MS Paintを使用してモックアップを作成して、自分が行っていることを示すことができる、IMOです。 (モックアップ画像をアップロードしてリンクする必要があります...) –
@Paul:私はあなたのために詳細とモックアップ画像を追加しました。 – Alex
私はあなたに役立つ完全なコードサンプルを追加しました。ハードコーディングされていて、ちょっとハックされていますが、役に立つかもしれません。 –