C#将字符串旋转180度

时间:2010-06-07 17:12:13

标签: c# string

嗨我有一些旋转字符串的问题,我发现你需要graphics.rotate()但是当我改变旋转时,我甚至看不到字符串。看来枢轴点完全抛弃了我。我也看到了变换的例子,但我觉得我不需要这个?

如果我的字符串是图形标签,从上到下阅读,我需要将其旋转180度,以便从下到上阅读,我该怎么做?

提前致谢

5 个答案:

答案 0 :(得分:1)

graphics.Rotate(180)方法使用位置作为枢轴点。所以基本上,你的字符串被抛出剪辑,并没有渲染到它的假定位置。如果您只是在剪辑中渲染此字符串,则应该很容易在正确的位置进行替换。

这是一个临时解决方案,假设您在一个图片框内绘图,而您只是在其中呈现字符串。

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

答案 1 :(得分:1)

字符串是一种数据类型,就像变量一样。我假设您的意思是要旋转表单或网页上显示的文本。它是什么类型的应用程序?

另外,请指明字符串显示的控件类型... textbox,label,gridview ...

答案 2 :(得分: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();

另一个角度为180°

的例子

Xnew = cons(alpha)* Xold + sin(alpha)Yold

Yold = -sin(alpha)* Xold + cons(alpha)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。

的问候,

答案 3 :(得分:0)

也许尝试只旋转几度开始,看看图形开始转移的位置? 180可能会让它“脱离屏幕”。

答案 4 :(得分:0)

如果您使用的是Win32 / GDI / GDI +,请查看我对此问题的回答:

How to draw vertical text in Windows GUI?

如果您使用的是HTML或其他基于Web的解决方案,那么这些可能有所帮助:

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

如果您不是指垂直文本而实际上确实意味着旋转的字符串,那么您需要使用变换和抽绳。

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

当然,您可能需要进行翻译转换才能将文本重新显示出来。