Выделение текста в программе WPF с использованием C#

Обычно для отображения текста в WPF вы используете какой-то объект, такой как Label или TextBlock, но при необходимости вы можете нарисовать текст самостоятельно. Чтобы сделать это проще, во время разработки я устанавливаю свойство Background окна Transparent (иначе окно рисует фон поверх любого текста, который вы рисуете). Я также назвал основной элемент управления grdMain, чтобы было легко определить, насколько велика клиентская область окна.

Чтобы нарисовать текст, переопределите метод OnRender окна и используйте его параметр drawingContext, чтобы сделать рисунок. Эта программа использует следующий метод OnRender.

protected override void OnRender(DrawingContext drawingContext)
{
    // Очистите фон и нарисуем эллипс.
    DrawEllipse(drawingContext);

    // Создаем объект FormattedText.
    Typeface typeface = new Typeface("Times New Roman");
    double em_size = 40;
    FormattedText formatted_text = new FormattedText(
        "FormattedText", CultureInfo.CurrentUICulture,
        FlowDirection.LeftToRight,
        typeface, em_size, Brushes.Red);

    // Центрировать текст по горизонтали.
    formatted_text.TextAlignment = TextAlignment.Center;

    // Найдите центр клиентской области.
    double xmid = grdMain.ActualWidth / 2;
    double ymid = grdMain.ActualHeight / 2;
    Point center =
        new Point(xmid, ymid - formatted_text.Height / 2);

    // Рисуем текст.
    drawingContext.DrawText(formatted_text, center);

    // Нарисуем эллипс в точке рисования текста.
    drawingContext.DrawEllipse(Brushes.Green, null, center, 3, 3);
}

Этот метод начинается с вызова метода DrawEllipse для рисования эллипса, который заполняет окно. См. Пример Извлечь эллипс в программе WPF, используя C# для получения информации о том, как работает этот метод.

Далее код создает объект Typeface для представления используемого шрифта, в этом случае Times New Roman. Затем он использует Typeface для создания объекта FormattedText. Этот объект представляет собой конкретный фрагмент текста, нарисованный специальной кистью. Конструктор FormattedText принимает в качестве параметра культуру, которая должна использоваться для рисования текста. Этот пример просто использует текущую культуру пользовательского интерфейса программы.

В дополнение к указанию используемой кисти объект FormattedText предоставляет свойства и методы, позволяющие вам управлять форматированием текста другими способами. Этот пример устанавливает свойство объекта TextAlignment объекта, чтобы центрировать текст по горизонтали.

В отличие от класса StringFormat в GDI +, свойство TextAlignment не дает вам никакого контроля над вертикальным выравниванием текста. Чтобы выровнять текст по вертикали, вам нужно измерить текст и вычислить правильную координату Y.

В этом примере используется размер элемента управления grdMain, чтобы найти центр клиентской области окна. Затем он вычитает половину высоты форматированного текста из координаты Y, чтобы центрировать текст по вертикали.

Источник: http://csharphelper.com/blog/2015/04/render-text-in-a-wpf-program-using-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector