Позиционирование текста в ToolStripMenuItem

202
21 февраля 2019, 16:00

Я задал первому елементу меню висоту 60 и textalign = MiddleCenter Но елемент просто игнорит свойство

Нужно разместить текст вертикально и горизонтально по центру

Answer 1

Отрисовать текст посередине элемента можно вручную, в событии Paint.

private void openToolStripMenuItem_Paint(object sender, PaintEventArgs e)
{
    var item = sender as ToolStripItem;
    TextRenderer.DrawText(e.Graphics, item.Text, item.Font, e.ClipRectangle, item.ForeColor
        //, TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter
        );
}

TextRenderer - это отрисовка с помощью GDI. По умолчанию задаётся форматирование по центру, как по вертикали, так и по горизонтали. Можно раскомментировать строку, чтобы задать форматирование самостоятельно.

Можно использовать отрисовку с помощью GDI+. Тут по умолчанию отрисовка выполняется в левом верхнем углу, поэтому задаём нужную.

private void openToolStripMenuItem_Paint(object sender, PaintEventArgs e)
{
    var item = sender as ToolStripItem;
    var sf = new StringFormat();
    sf.Alignment = StringAlignment.Center;
    sf.LineAlignment = StringAlignment.Center;
    e.Graphics.DrawString(item.Text, item.Font, Brushes.Black, e.ClipRectangle, sf);
}

В обоих случаях нужно отключить вывод текста элемента по умолчанию. Для этого можно задать свойство DisplayStyle в None.

READ ALSO
Обработка нескольких IndexOutOfRangeException

Обработка нескольких IndexOutOfRangeException

Ситуация: В методе происходит парсинг данных:

223
C# работа с созданным cmd процессом

C# работа с созданным cmd процессом

Всем привет ! В питоне есть такая штука как subprocess и создавая его можно заставить программу писать в консоль и читать результат из консолиТ...

217
Unity BoxCollider - растянуть по размеру предмета

Unity BoxCollider - растянуть по размеру предмета

Когда добавляешь BoxCollider к новому предмету, он автоматически растягивается под его размерыКогда меняешь меш этого предмета - коллайдер не подтягивается...

228
Реализовать сохранение и открытие сохраненного файла в проекте

Реализовать сохранение и открытие сохраненного файла в проекте

Можно ли сохранить массив объектов, в отдельный файл, а потом запустить этот файл в приложении и восстановить массив (который был в файле)...

190