C# 在picturebox上绘图与直接在表单上绘图

C# 在picturebox上绘图与直接在表单上绘图,c#,winforms,gdi+,C#,Winforms,Gdi+,我正在用c#创建一个轻量级GDI+游戏引擎。我读过一些书,这些书使用picturebox控件作为创建游戏引擎时要绘制的图形表面。然而,在网上做了一些研究之后,似乎使用picturebox控件不是我应该做的。这是真的吗?如果是这样,原因是什么?您不需要任何控件,只需直接在窗体或启用了双缓冲的面板上绘制即可。好多了。您必须创建自己的对象,以便我们可以计算它们的区域,我们将使用它们的区域在表单/面板上填充它们。您必须处理窗体/面板的事件MouseMove,MouseDown,MouseUp。另一个问题

我正在用c#创建一个轻量级GDI+游戏引擎。我读过一些书,这些书使用picturebox控件作为创建游戏引擎时要绘制的图形表面。然而,在网上做了一些研究之后,似乎使用picturebox控件不是我应该做的。这是真的吗?如果是这样,原因是什么?

您不需要任何控件,只需直接在窗体或启用了双缓冲的
面板上绘制即可。好多了。您必须创建自己的对象,以便我们可以计算它们的
区域
,我们将使用它们的
区域
在表单/面板上填充它们。您必须处理窗体/面板的事件
MouseMove
MouseDown
MouseUp
。另一个问题是如何用
对象轻击鼠标
,以便我们可以根据用户行为控制对象。有一种很有用的方法,称为
区域
对象的
IsVisible


我们不应该在这里使用任何控件进行绘制的原因是我们需要一些对象之间重叠的
透明
效果,如果不想说不可能,使用
控件无法帮助您轻松实现,即使您可以实现,效果也很差。所以只要在同一块画布上绘制所有内容。您还应该尝试在
图像
上绘制,然后在
窗体/面板
上绘制该
图像
,或者实现自己的
双缓冲或三缓冲
。有很多事情要做,但我希望你有一些重要的笔记和我的答案,并选择正确的方向。

到目前为止你有什么经验?你试过什么,怎么失败的?没关系,PictureBox做的很少。您可以免费获得双缓冲,这就是您看到此建议的典型原因。@HansPassant picturebox=双缓冲;这是我一直在寻找的关键信息类型(希望我能将其标记为答案)。考虑到实现我自己的双缓冲解决方案可能很容易,我将看看这是怎么回事,如果不是,我将加倍使用picturebox。