嗨我有一些旋转字符串的问题,我发现你需要graphics.rotate()但是当我改变旋转时,我甚至看不到字符串。看来枢轴点完全抛弃了我。我也看到了变换的例子,但我觉得我不需要这个?
如果我的字符串是图形标签,从上到下阅读,我需要将其旋转180度,以便从下到上阅读,我该怎么做?
提前致谢
答案 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);
当然,您可能需要进行翻译转换才能将文本重新显示出来。