c #: вращение текста в пользовательском элементе управления - PullRequest
0 голосов
/ 21 апреля 2009

Я пытаюсь повернуть какой-то текст внутри метки. У меня есть метка cusom, которая позволяет мне контролировать процесс рендеринга текста.

protected override void OnPaint ( PaintEventArgs pe )
{
    Graphics g = pe.Graphics;
    g.RotateTransform( angle );

    g.drawString( text );

    g.ResetTransform();
}

Проблема, с которой я сталкиваюсь, заключается в том, что вращение происходит вокруг начала элемента управления, то есть координат (0,0). Есть ли способ, позволяющий вращать текст вокруг центра элемента управления, а не oragin?

Мне известна функция 'g.RotateTransform ()', поэтому одним из возможных решений было бы повернуть текст, а затем перевести его в центр элемента управления. Если это единственный способ управления заданием, есть ли общий способ, которым я могу вычислить преобразователь, чтобы гарантировать, что текст находится в центре элемента управления?

Спасибо

1 Ответ

2 голосов
/ 21 апреля 2009

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

...