如上所述,this.CreateGraphics()
实际上是创建对同一个图形对象的引用,也就是整个表单本身。除了线程问题,您“可以”在代码中(理论上)通过确保您的绘图不会超出预定义的绘图区域来代表您的不同屏幕来处理这个问题。这将涉及一些硬编码,这不是我的风格或偏好。
恕我直言,更好的方法是在内存中创建两个 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());
}
显然,这不是解决这个问题的唯一方法,但应该作为指导来激励你找到自己的解决方案。:)