Winforms приложения - лучший способ обработки изображений для повышения производительности - PullRequest
0 голосов
/ 24 мая 2011

Возможно, плохой заголовок, но я работаю над приложением winforms, и все шло хорошо, пока я не начал проводить юзабилити-тестирование разных размеров.

Я заметил, что «перерисовка» элементов управления при изменении размера будет ОЧЕНЬ медленной. Я гуглил и обнаружил, что splitcontainers и заливка стиля док-станции не очень хорошо играют, поэтому я изменил свой подход, и производительность улучшилась, но она все еще была медленной.

Оказывается, мои фоновые изображения в моих пользовательских элементах управления вызывали задержку, и это заставило меня задуматься, что лучше для этого делать? У меня есть несколько разных градиентов размером около 1024x768, которые настроены на растяжение по размеру.

Мое временное исправление - заменить мой красивый градиентный фон сплошным черным. Но это не делает вещи выглядеть так хорошо. Кажется, что если бы у меня было два фоновых изображения разных размеров и поменять их местами на form_resize, это было бы наиболее эффективно, но во многих случаях я делаю трудные вещи, потому что я не знаю лучше. Так что я решил спросить здесь. Это характерно только для winforms. Я экспортирую вектор, когда могу, для моего wpf / sl материала.

Ответы [ 2 ]

0 голосов
/ 24 мая 2011

Градиентное изображение очень специфично? Если это просто линейный градиент, вы не можете нарисовать фон самостоятельно?

В пользовательском элементе управления добавьте переопределение 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);
    }
0 голосов
/ 24 мая 2011

Попробуйте установить для свойства BackgroundImageLayout значение «Нет» на элементах управления с градиентами. Это обычно дает умеренное повышение производительности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...