Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Контур текста тормозит при отрисовке


Автор: -Mikle- 26.2.2009, 18:07
Имеется такой код в рендеринге моего контрола:

Код

        protected override void OnRender(DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);

            drawingContext.DrawGeometry(Brushes.Transparent, new Pen(Brushes.Red, 3), abrisText);
            drawingContext.DrawText(formatedText, new Point());
        }

        private void rebuildRenderObjects()
        {
            formatedText = new FormattedText(text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface(new FontFamily("Georgia"), FontStyles.Normal, FontWeights.Bold, FontStretches.Normal), 24, Brushes.Yellow);
            if (text.Length > 0)
                formatedText.SetFontSize(40, 0, 1);

            abrisText = formatedText.BuildGeometry(new Point());
        }

        string text = "какой-то текст";
        FormattedText formatedText;
        Geometry abrisText;


При относительно небольшом объеме текста (< 1 KB), тормозит страшно во время анимации! Причем тормозит даже анимация другого контрола, находящегося на его фоне. Короче тормозит отрисовка abrisText. Подозрение, конечно же сразу, на объем графики, которую приходится рисовать (abrisText). Но в голову приходят сразу все заявления мелкомягких о высокой производительности графики, которую теперь рисует DirectX. В чем же дело? И как это исправить? Может что-то настроить нужно?

PS: Рисование в Bitmap'ы не предлагать, работает быстро, но мне не нравится как выглядит растянутый растр и сама идея создавать и рисовать растр.

PPS: Ноутбук Toshiba Satellite (Vista Sertifited), IntelCore2Duo 2.17, 3 Гига памяти, Radeon HD3470 видюха

Автор: -Mikle- 27.2.2009, 12:26
Ни у кого нет версий или аргументов?

Автор: -Mikle- 3.3.2009, 08:12
подниму-ка я еще разок эту тему...

Почему же все таки богатая 3D графика (через DirectX) рисуется быстрее, чем 2D графика (через тотже DirectX)??? ??? ???

Автор: dazy 4.3.2009, 22:27
м.б. прозрачность много жрет и тормозит?

Попробуйте пройтись Perforator'ом или Snoop'om чтобы поискать слабое место.

Автор: -Mikle- 5.3.2009, 18:20
dazy, я нашел в инете только снупер, а Perforator не нашел... Снупер, как я понял, умеет только визуальное дерево показывать, это мне ничего не дает... А что делает перфоратор и где найте его? Я ни разу не слышал об этих утилитах...

Автор: Partizan 5.3.2009, 18:51
-Mikle-, профайлером можно пройтись и найти узкие места...

Автор: rooks 5.3.2009, 23:49
-Mikle-, http://msdn.microsoft.com/en-us/library/aa969767.aspx
хотя у себя я его так и не нашел, скачал отсюда http://windowsclient.net/wpf/perf/wpf-perf-tool.aspx

Автор: -Mikle- 6.3.2009, 01:01
rooks, спасибо за ссылки!

Попоробую, потом отпишусь...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)