前述のように、this.CreateGraphics()
実際にはフォーム全体である同じグラフィックス オブジェクトへの参照を作成しています。スレッドの問題はさておき、さまざまな画面を表すために、描画が事前定義された描画領域の外に出ないようにすることで、(理論的には) コードでこれを処理できます。これには少しハードコーディングが必要であり、私のスタイルでも好みでもありません。
私見、はるかに良い方法は、メモリ内に2つの Image オブジェクトを作成することです...
Image screen1 = new Bitmap(100, 100); // (width, height)
Image screen2 = new Bitmap(100, 100); // (width, height)
次に、各画像面に個別に描画し、画像ビューアのような単純なものを使用して各「ビュー」を保持できます...
private void DrawGame()
{
DrawSprite1(Graphics.FromImage(screen1));
DrawSprite2(Graphics.FromImage(screen2));
}
public void DrawSprite1(Graphics g)
{
g.FillEllipse(Pens.Blue, screen1.GetBounds());
}
public void DrawSprite2(Graphics g)
{
g.FillRect(Brushes.Red, screen2.GetBounds());
}
明らかに、これがこの問題に取り組む唯一の方法ではありませんが、独自の解決策に向けて刺激を与えるためのガイドとして使用する必要があります。:)