C# 在winforms中创建覆盖控件

C# 在winforms中创建覆盖控件,c#,winforms,C#,Winforms,我正在使用c#winforms显示图像。使用用户控件显示图像。现在,我想让用户画线,把其他小图像,写文本等图像上的覆盖控制。如何提供此功能?如果我使用另一个用户控件来显示带有透明背面的覆盖控件,这会起作用吗??任何其他解决方案都是受欢迎的。您可以尝试使用画布()来处理此问题,画布()处理将图像绘制为背景以及之后的所有注释/标记。这将使前景看起来是透明的。我想你会想为表演做准备的 您可以尝试设置样式。allpaintingwmpaint。另外,尝试覆盖,什么也不做,覆盖,并在里面做你所有的画 如果

我正在使用c#winforms显示图像。使用用户控件显示图像。现在,我想让用户画线,把其他小图像,写文本等图像上的覆盖控制。如何提供此功能?如果我使用另一个用户控件来显示带有透明背面的覆盖控件,这会起作用吗??任何其他解决方案都是受欢迎的。

您可以尝试使用画布()来处理此问题,画布()处理将图像绘制为背景以及之后的所有注释/标记。这将使前景看起来是透明的。我想你会想为表演做准备的

您可以尝试设置样式。allpaintingwmpaint。另外,尝试覆盖,什么也不做,覆盖,并在里面做你所有的画

如果性能仍然不可接受,请密切注意PaintEventArgs.ClipRect属性。这是您需要绘制的唯一区域。诀窍是找出哪些注释/覆盖与该矩形相交,并按正确顺序绘制它们


此画布或更高级别的控件都需要跟踪鼠标移动,以便您知道在何处绘制线条、粘贴图像等。

+1对于
双缓冲区的建议,这将减少闪烁。到处都是很好的建议。我已经用多个面板覆盖了一个背景。而且你在跟踪鼠标移动方面是对的,这将成为一个真正的挑战。与使用矩形相比,面板作为画布的优势在于,面板内置了鼠标跟踪功能。