winforms应用程序-处理图像以提高性能的最佳方式



这可能是一个糟糕的标题,但我正在开发一个winforms应用程序,在我开始进行不同大小的可用性测试之前,一切都很顺利。

我注意到,在调整大小事件中"重新绘制"控件的速度会非常慢。我在谷歌上搜索了一下,发现拆分容器和码头式填充效果不好,所以我改变了方法,性能有所提高,但仍然很慢。

事实证明,我的用户控件上的背景图像导致了延迟,这让我想知道这方面的最佳做法是什么?我有一些不同的渐变,大约是1024x768,设置为sizemode拉伸。

我的临时解决方案是用纯黑替换我漂亮的渐变背景。但这并不能让事情看起来那么美好。似乎如果我有两个不同大小的背景图像,并在form_resize上交换它们,这将是最有效的,但很多时候我做事情的方式很艰难,因为我不知道得更好。所以我想我会在这里问。这仅适用于winforms。我可以为我的wpf/sl东西导出矢量。

渐变图像是否非常具体?如果它只是一个线性梯度,你不能自己画背景吗?

在用户控件中,添加一个OnPaint覆盖,如下所示:

    protected override void OnPaint(PaintEventArgs e)
    {
        Brush brush = new LinearGradientBrush(
            Point.Empty,
            new Point(0, this.Height),
            Color.Yellow,
            Color.Green);
        e.Graphics.FillRectangle(
            brush, e.ClipRectangle);
    }

尝试在带有渐变的控件上将BackgroundImageLayout属性设置为"None"。这通常会适度提高的性能

最新更新