Измерьте размер этикетки - PullRequest
3 голосов
/ 29 марта 2010

Я реализую пользовательский элемент управления с некоторыми надписями, и мне нужно измерить размер этих надписей, чтобы иметь оптимальный макет. Таким образом, я могу правильно показать элемент управления для каждого шрифта и размера шрифта.
Не могли бы вы сказать мне, как я могу это сделать, пожалуйста?
Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 марта 2010

Чтобы изменить размер и упорядочить пользовательский элемент управления в соответствии с размером его подэлементов, необходимо переопределить MeasureOverride и ArrangeOverride .

Для получения подробной информации см. Ссылки, но в двух словах ваш элемент управления должен (в MeasureOverride):

  1. вызовите UIElement.Measure на всех дочерних элементах (включая ваши ярлыки), которые вернут размер, который каждый из ваших хотел бы иметь ,
  2. рассчитайте свой желаемый размер и
  3. возвращает этот размер в каркас (используя его в качестве возвращаемого значения MeasureOverride).

После этого в ArrangeOverride вы получаете размер, выделенный вашему элементу управления платформой в качестве параметра, и вы

  1. определяет, сколько места вы хотите выделить для каждого из ваших дочерних элементов, и
  2. вызов UIElement.Arrange для каждого дочернего элемента.
0 голосов
/ 29 марта 2010

Вы можете посмотреть ev.Graphics.MeasureString (str, font)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...