在winforms中创建叠加控件

时间:2010-08-24 13:49:20

标签: c# winforms

我使用c#winforms来显示图像。使用用户控件完成图像的显示。现在我想让用户在叠加控件上绘制线条,将其他小图像,文本等写在图像上。我该如何提供此功能?如果我使用另一个用户控件来显示透明背面的叠加控件,那会起作用吗?任何其他解决方案都将受到欢迎。

1 个答案:

答案 0 :(得分:3)

您可以尝试使用画布(Panel)来处理此问题,该画布处理将图像绘制为背景以及之后的所有注释/标记。这将使前景看起来是透明的。我希望你能为Control.DoubleBuffer设置性能。

您可以尝试设置样式ControlStyles。AllPaintingInWmPaint。另外,尝试覆盖Control.OnPaintBackground并不执行任何操作,并覆盖Control.OnPaint并在那里完成所有绘画。

如果性能仍然不可接受,请密切关注PaintEventArgs.ClipRect属性。这是您需要绘制的唯一区域。诀窍在于确定哪些注释/叠加层与此矩形相交并以正确的顺序绘制它们。

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