gpt4 book ai didi

C# 半透明 'LightBox' 控件调用Parent的paint方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:11 27 4
gpt4 key购买 nike

我正在尝试创建一个 lightbox effect在我的应用程序中。为实现这一点,我有一个 UserControl,其中一个面板代表半透明覆盖层,另一个面板托管所有必要的内容。

当我显示此 UserControl 时,它通常会尝试渲染自身 2-3 次,导致背景看起来越来越暗。我考虑过在 UserControl 中执行以下操作

protected override void OnPaint ( PaintEventArgs e )
{
if ( Parent != null )
{
Parent.Refresh();
}

base.OnPaint( e );
}

不幸的是,这似乎会导致可怕的循环效应,父级会重新绘制 itelf,然后 UserControl 会重新绘制 itelf……非常困惑。有什么办法可以阻止这种情况吗?可能通过从应用程序中获取打印屏幕图像,将其显示在用户控件中并覆盖在上面?

编辑

我注意到了this question虽然我希望我不需要为我创建的每个灯箱创建一个新表单!

最佳答案

根据经验,.Invalidate() 通常比 .Refresh() 好得多,因为 .Refresh() 会导致立即重绘,所以如果您调用它两次,就会进行两次重绘。不过,我认为它不会对您有太大帮助。

关于C# 半透明 'LightBox' 控件调用Parent的paint方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/532918/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com