C# 它们是防止picturebox在调整大小时闪烁的一种方法吗?

C# 它们是防止picturebox在调整大小时闪烁的一种方法吗?,c#,.net,vb.net,visual-studio-2010,gdi+,C#,.net,Vb.net,Visual Studio 2010,Gdi+,我想在vb.net应用程序中包含一幅图像,所以我在photoshop中将其分割成多个图片框,并相应地锚定它们,这样当我的应用程序调整大小时,它不会拉伸图像的所有部分。这一切都很好,它看起来很棒,而且几乎可以很好地工作。除了这样一个事实:当窗体被调整大小时,它会导致pictureboxes闪烁 我知道picturebox不是最快的控件,所以我认为它刷新速度不够快。除了闪烁之外,它下面还有一个白色背景,即使图片框是透明的 我尝试为背景添加背景颜色,希望它能更好地隐藏闪烁,同时加载也无济于事 所以我的

我想在vb.net应用程序中包含一幅图像,所以我在photoshop中将其分割成多个图片框,并相应地锚定它们,这样当我的应用程序调整大小时,它不会拉伸图像的所有部分。这一切都很好,它看起来很棒,而且几乎可以很好地工作。除了这样一个事实:当窗体被调整大小时,它会导致pictureboxes闪烁

我知道picturebox不是最快的控件,所以我认为它刷新速度不够快。除了闪烁之外,它下面还有一个白色背景,即使图片框是透明的

我尝试为背景添加背景颜色,希望它能更好地隐藏闪烁,同时加载也无济于事

所以我的第一个问题是,他们有没有办法阻止这一切?如果不是的话,他们的控件是否比我使用的更快

也许有人知道一个自定义图片框,或者即使你知道一个更快的控件。基本上,任何允许背景图像和透明BG颜色的控件都可以工作,只要速度更快


我真的很感谢你的帮助。谢谢PS:我的应用程序在VB.net中,但我也添加了一个C标记,因为我很可能不得不切换控件,而不是通过代码修复它。

处理此问题的两种方法是:

a) 在picturebox中调整图像的大小,使其更小并能更快地重新绘制,或


b) 使用计时器重新绘制图像,使其在上次调整大小事件后100至350毫秒内才开始重新绘制。

两个避免表单u中控件闪烁的选项可以使用以下功能 仅将其复制并粘贴到form.vb中的任何位置

Protected Overrides ReadOnly Property CreateParams() As CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.ExStyle = cp.ExStyle Or &H2000000
            Return cp
        End Get
    End Property 'CreateParams

仅将其粘贴到只读属性的位置

您的构造函数是什么样子的。。?您是否尝试过设置
DoubleBuffered=true
如果查看屏幕右侧,您会发现前面的问题:谢谢。我看了一眼。我不确定在哪里添加双缓冲布尔值。我尝试创建一个子新的并将其放入其中,但它重置了我的窗体。]好的,那么我将在计时器中添加代码以重新绘制,然后在窗体大小调整处理程序中启用计时器?然后在完成时禁用?如何阻止它自动刷新?我猜我将不得不以某种方式覆盖油漆过程?对不起,如果我完全错了,整个特殊图形的事情对我来说是新的。在处理程序中,禁用计时器。我想你可以在图片框的paint事件中阻止刷新(或者在那里启动计时器而不是resize事件),但是我还没有测试过它。天哪,你是怎么做到的+1.我一直在寻找一个解决方案,以避免闪烁在我的面板从4个月前!在本论坛和其他论坛中询问之后,在阅读之后,在尝试子类面板之后。。。您只需几行代码就可以得到解决方案!非常棒,谢谢。但是你能解释一下这行是什么吗?@ElektroStudios从Microsoft文档中看到这个链接来解释一下,如果你把它放在一个MDI父窗体中,它也会修复所有的子窗体,而不必把代码段放在每个窗体类中。