Используйте код WPF для отображения индексов и надстроек в C#

В сообщении Отображение индексов и надстроек в текстовом блоке WPF в C# < / a> Я упомянул, что вы можете создавать индексы и надстрочные индексы в коде WPF, но в коде XAML это было проще. Хуан Мануэль Монтес попросил пример, так что вот оно.

Чтобы добавить прогоны в элемент управления WPF TextBlock, вы добавляете объекты в свою коллекцию Inlines. Чтобы создавать индексы и надстрочные индексы, вы можете добавить объекты Run в коллекцию.

Программа использует следующие методы, чтобы упростить создание объектов Run.

// Сделайте прогон подстроки.
private Run SubscriptRun(string text, int font_size)
{
    Run run = new Run(text);
    run.FontSize = font_size;
    run.BaselineAlignment = BaselineAlignment.Subscript;
    return run;
}

// Сделайте надстрочный прогон.
private Run SuperscriptRun(string text, int font_size)
{
    Run run = new Run(text);
    run.FontSize = font_size;
    run.BaselineAlignment = BaselineAlignment.Superscript;
    return run;
}

Метод SubscriptRun создает объект Run, который содержит нужный текст. Затем он дает новый размер шрифта и устанавливает его свойство BaselineAlignment, чтобы сделать текст индексом.

Метод SuperscriptRun аналогичен, за исключением того, что текст расшифровывается.

Следующий код использует эти методы для построения уравнений.

// Создаем уравнения с индексами и надстрочными индексами.
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    txtWater.FontSize = 16;
    txtWater.Text = "";

    txtWater.Inlines.Add("2H");
    txtWater.Inlines.Add(SubscriptRun("2", 10));
    txtWater.Inlines.Add(" + O");
    txtWater.Inlines.Add(SubscriptRun("2", 10));
    txtWater.Inlines.Add(" = 2H");
    txtWater.Inlines.Add(SubscriptRun("2", 10));
    txtWater.Inlines.Add("O");

    txtPythagoras.FontSize = 16;
    txtPythagoras.Text = "";

    txtPythagoras.Inlines.Add("3");
    txtPythagoras.Inlines.Add(SuperscriptRun("2", 10));
    txtPythagoras.Inlines.Add(" + 4");
    txtPythagoras.Inlines.Add(SuperscriptRun("2", 10));
    txtPythagoras.Inlines.Add(" = 5");
    txtPythagoras.Inlines.Add(SuperscriptRun("2", 10));
}

Сначала код инициализирует размер шрифта элемента txtWater и очищает его текст. Затем он добавляет серию прогонов в коллекцию Inlines. Когда он вызывает метод коллекции Добавить и передает ему строку, строка добавляется в шрифт элемента управления и с обычным выравниванием базовой линии. Другие операторы добавляют подстроки подстроки.

Затем код выполняет аналогичные шаги, чтобы сделать элемент управления txtPythagoras отображать уравнение, использующее надстрочные индексы.

Источник: http://csharphelper.com/blog/2016/06/use-wpf-code-display-subscripts-superscripts-c/

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