次のコードを使用して、画面の一部を Windows フォームの新しい場所にコピーしようとしています。
private void Form1_Paint(object sender, PaintEventArgs e)
{
var srcPoint = new Point(0,0);
var dstPoint = new Point(Screen.PrimaryScreen.Bounds.Width/2, Screen.PrimaryScreen.Bounds.Height/2);
var copySize = new Size(100, 100);
e.Graphics.CopyFromScreen(srcPoint, dstPoint, copySize, CopyPixelOperation.SourceCopy);
}
CopyFromScreen 関数は、その前に設定されたクリップを無視するように見えます。
e.SetClip(new Rectangle(srcPoint.X, srcPoint.Y, 20, 20));
私は何か間違ったことをしていますか、それともこれは間違ったアプローチですか。
コンテキスト: HUD を端にコピーし、中央に近づけることで、UI ワイドスクリーン ゲームの問題を軽減しようとしています。
私は FlawlessWidescreen を認識していますが、あまり人気のない多くのゲームをサポートしていません。メモリをいじる(完璧が行うこと)も機能する可能性があると思いますが、ほとんどの場合TOSに反します。
編集:最終的な目標は、単純な長方形ではなく、任意のパスを形状としてコピーすることです(イメージマスクから望んでいました)。
編集 #2: 100 ミリ秒ごとに不規則な形状が描画されます。500ミリ秒ごとに遅くなるまで、ゲームが遅くなるだけであることがわかりました。しかし、それでもゲームはスムーズではありません。画像をコピーして描画するこの操作は、GDI+ での操作が重すぎるのでしょうか? 何も詰まらないように簡単だと思っていました。
回答を承認済みとしてマークする前に考えたことはありますか?