none
FormattedText и LinearGradientBrush проблемы если в тексте несколько языков RRS feed

  • Общие обсуждения

  • using (DrawingContext drawingContext = visual.RenderOpen()) { var formattedText = new FormattedText(text, CultureInfo.InvariantCulture, FlowDirection.LeftToRight, new Typeface(new FontFamily("Tahoma"), FontStyles.Normal, FontWeights.ExtraBold, FontStretches.Normal), size, Brushes.Red); drawingContext.DrawImage(_bitmapSource, new Rect(0, 0, 128, 64)); //drawingContext.DrawText(formattedText, new Point(0, 0)); LinearGradientBrush linGrBrush = new LinearGradientBrush(); linGrBrush.StartPoint = new Point(0, 0); linGrBrush.EndPoint = new Point(1, 0); linGrBrush.GradientStops.Add(new GradientStop(Colors.Red, part - 0.05)); linGrBrush.GradientStops.Add(new GradientStop(Colors.Blue, part)); formattedText.SetForegroundBrush(linGrBrush,0, text.Length); var textGeometry = formattedText.BuildGeometry(new System.Windows.Point(0, 0)); drawingContext.DrawGeometry(Brushes.Red, new System.Windows.Media.Pen(Brushes.Yellow, 2), textGeometry); drawingContext.DrawText(formattedText, new Point(0, 0)); }

    (где символ -> от туда начинается закрашивание)

    Если только русский то все отлично: ->"Тестовая строка" закрашивается с лева на право.

    Если русский и английский то все плохо: ->"Some test content ->стр->ока". Одновременно закрашивается из нескольких позиций.

    Может кто-нибудь сталкивался с подобной проблемой?

    23 июня 2015 г. 13:05