C # повернуть строку на 180 градусов - PullRequest
0 голосов
/ 07 июня 2010

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

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

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

Ответы [ 5 ]

1 голос
/ 15 августа 2012

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

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();

другой пример с углом 180 °

Xnew = минусы (альфа) * ​​Xold + грех (альфа) Yold

Yold = -син (альфа) * ​​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.

С уважением,

1 голос
/ 07 июня 2010

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

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

g.TranslateTransform(pictureBox1.Width, pictureBox1.Height);
g.RotateTransform(180);
1 голос
/ 07 июня 2010

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

Также, пожалуйста, укажите, в каком типе элемента управления отображается строка ... textbox, label, gridview ...

0 голосов
/ 07 июня 2010

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

Как нарисовать вертикальный текст в графическом интерфейсе Windows?

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

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

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

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

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

0 голосов
/ 07 июня 2010

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

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