2010-06-07 3 views
0

Привет, у меня есть несколько проблем с вращением строки, я обнаружил, что вам нужна графика.rotate(), но когда я меняю вращение, я даже не вижу строку. Кажется, точка опоры полностью меня бросила. Также я увидел пример с преобразованием, но я решил, что мне это не нужно?C# вращать строку 180 градусов

Если моя строка была меткой графа, сверху вниз, и мне нужно было повернуть ее на 180 градусов, чтобы она читала снизу вверх, как бы я это сделал?

Заранее спасибо

+5

Вы смешиваете язык C# с некоторым неопределенным api. – mikerobi

ответ

0

Может попробовать повернуть всего на несколько градусов, чтобы начать и увидеть, где график начинает перекладывать? 180 может заставить его отображать «вне экрана».

1

Метод graphics.Rotate (180) использует это местоположение как точку поворота. Итак, в основном, ваша строка сбрасывается с клипа и не отображается в предполагаемом местоположении. Если вы только создаете эту строку в клипе, ее должно быть достаточно просто заменить в нужном месте.

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

g.TranslateTransform(pictureBox1.Width, pictureBox1.Height); 
g.RotateTransform(180); 
1

Строка представляет собой тип данных, например, для переменной. Я предполагаю, что вы хотите, чтобы вы поворачивали текст, отображаемый на форме или веб-странице. Что это за приложение?

Кроме того, просьба указать, в каком типе управления отображается строка ... текстовое поле, этикетки, GridView ...

+0

Я не думаю, что здесь много путаницы, что он спрашивает. Кроме того, ответ на вопрос не зависит от того, какой тип контроля отображается. –

0

Если вы используете Win32/GDI/GDI +, то увидеть мой ответ на этот вопрос:

How to draw vertical text in Windows GUI?

Если вы используете HTML или некоторые другие решения на основе веб-то это может помочь:

https://stackoverflow.com/search?q=vertical+text

Если вы не имеете в виду вертикальный текст и действительно имеете в виду вращающуюся строку, вам нужно использовать преобразование и drawstring.

Graphics.RotateTransform(90);    
Graphics.DrawString("123456", this.Font, new SolidBrush(Color.Black), 0, 0); 

Конечно, вам может потребоваться преобразование перевода, чтобы вернуть текст в поле зрения.

1

Вы можете использовать матрицу вращения:

cos(alpha) sin(alpha); 
-sin(alpha) cos(alpha) 

Если alph = 90 мы получим эту матрицу

0 1; 
-1 0 

Таким образом, новая точка высчитывает существо: Xnew = Yold and Ynew = - Xold

Например,

g.DrawString(str, new Font("Arial", 16), new SolidBrush(Color.Black), 50, 25); 
g.RotateTransform(90); 
g.DrawString(str, new Font("Arial", 16), new SolidBrush(Color.Black),25+8, -50-8); 
g.ResetTransform(); 

прочей Exemple ти под углом 180 °

Xnew = минусы (альфа) * ​​Xold + Sin (альфа) Yold

Yold = -sin (альфа) * ​​Xold + минусы (альфа) Yold

Xnew = - Xold и Ynew = -Yold

g.RotateTransform(180); 
g.DrawString(str, new Font("Arial", 16), new SolidBrush(Color.Black), -50-8 , -25-8); 
g.ResetTransform(); 

, который 8 размер шрифта строки, разделенной на 2.

пожеланиями,

Смежные вопросы