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

时间:2011-05-24 14:33:19

标签: winforms performance image

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

我注意到调整大小事件的控件“重绘”会非常慢。我用Google搜索并发现splitcontainers和dockstyle fill不能很好地播放,所以我改变了我的方法并且性能有所改善,但仍然很慢。

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

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

2 个答案:

答案 0 :(得分:0)

尝试使用渐变在控件上将BackgroundImageLayout属性设置为“无”。这通常会带来适度的性能提升

答案 1 :(得分:0)

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

在用户控件中,添加一个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);
    }