繁体   English   中英

在Winforms中创建叠加控件

[英]Creating Overlay Control in winforms

我正在使用c#winforms显示图像。 图像的显示是使用用户控件完成的。 现在,我想为用户提供画线,放置其他小图像,在覆盖控件上的图像上写文本等的功能。 如何提供此功能? 如果我使用另一个用户控件来显示带有透明背面的叠加控件,那行得通吗? 任何其他解决方案都将受到欢迎。

您可以尝试使用画布( Panel )来处理此问题,该画布处理将图像绘制为背景,然后再绘制所有注释/标记。 这将使前景显得透明。 我希望您可以设置Control.DoubleBuffer来提高性能。

您可能会尝试设置样式ControlStyles .AllPaintingInWmPaint。 另外,尝试覆盖Control.OnPaintBackground而不执行任何操作,并覆盖Control.OnPaint并在其中进行所有绘制。

如果性能仍然不能令人满意,请密切注意PaintEventArgs.ClipRect属性。 这是您唯一需要绘制的区域。 诀窍是弄清楚您的哪些注释/叠加层与此矩形相交,并以正确的顺序绘制它们。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM