1

これのスクリーンショットを喜んで提供しますが、問題は、キャプチャされた画像が実際のデスクトップよりもはるかに大きいことです。

デスクトップ hdc と新しい「グラフィックス」コマンドで BitBlt を使用しようとしたので、これに完全に不満を感じています。

私の実際のデスクトップ解像度は 1920x1080 - 1080p です。

BitBlt と "Graphics" は両方とも、解像度が 1536x864 @ 96 DPI であることを返します。

フォーム (WinForm)、最大化、ボーダレス、およびフォームが設​​定されているスケーリング モードに関係なく、1536x864 @ 96 DPI も表示されます。

キャプチャされた画像は、1920x1080 から行われているようですが、スクリーンショットとして 1536x864 の領域を切り取っています。

Prtscn ボタンを使用して PrintScreen を直接実行すると、画像全体が表示されますが、それでも実際に表示されるサイズよりも約 1.5 ~ 2 倍大きくなります。

私が探しているのは、スケール/dpi/ここで起こっていることは何でも、視覚的にどのように見えるかで、画面に表示されているものの写真を撮る方法の解決策です。私はスクリーン キャプチャ プログラムを作成し、RubberBand フォーム (ボックスを描画して画面の領域を選択するためのオーバーレイ フォーム) のいくつかの異なる例を使用しました。オフセットされ、コンテンツがズームされます。

これは非常に面倒です - 説明するだけでも、あなたのほとんどが私が使用する用語に精通しており、スクリーンショットを撮ることで何を期待できるかを知っていると確信しています.は。

例/考察

300x300 のウィンドウの写真を撮り、その左上の 150x150 を 300x300 にズームして、ウィンドウの残りの部分を完全にスキップすることを想像してみてください。結果の画像は 300x300 のままですが、選択したものではありません。

ここで、プログラムで取得できる唯一の寸法で画面の画像を取得し、その画像を画像ボックスに入れると想像してください。画面とピクチャボックスの両方が同じ寸法と dpi であると主張していても、ピクチャボックスが境界線のないボーダーレスでフルスクリーンに最大化されている場合でも、ピクチャボックス内の画像をスクロールする必要があります。しかし、フォームXDと同じサイズであることをまだどのように報告していますか(GraphicsまたはBitBltの寸法を実際のフォームと比較します。また、pictureboxの内容を比較してみましたが、それでも同じ効果です)

これはまさに、起こっている効果です。画面の領域またはセグメントをキャプチャしようとしたとき。Windows api/crl がこの一見些細なことについて嘘をついている理由はわかりませんが、すべての解像度で、この偽のズーム効果なしでスクリーンショット/キャプチャ領域を正確に取得する方法が必要です。

4

1 に答える 1