Имеется такой код в рендеринге моего контрола:
| Код | 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 видюха |