如何在c#
应用程序中翻转字符串,例如:" AMBULANCE "被视为镜像的文本。我不知道从哪里开始.im使用c#
表单应用程序
我试过翻转字符串,但有没有可能翻转字符串(如镜像)?
赞:ƎƆИA⅃UᙠMA
这与SO post
中没有相反答案 0 :(得分:6)
除了谢尔盖概述的方法之外,您还可以使用Graphics.ScaleTransform()
来反映有关Y轴的所有信息。
例如,创建一个默认的Windows窗体应用程序并将以下OnPaint()
放入其中,然后运行它:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
string text = "This will come out backwards";
e.Graphics.ScaleTransform(-1, 1);
float w = e.Graphics.MeasureString(text, this.Font).Width;
e.Graphics.DrawString(text, this.Font, Brushes.Black, -w, 0);
}
输出:
您还可以使用Graphics.RotateTransform()
来旋转文本,并使用Graphics.ScaleTransform(1, -1)
将其反转并镜像它:
答案 1 :(得分:4)
您可以创建位图,将字符串写入其中,然后使用Image.RotateFlip方法水平翻转位图:
Bitmap bitmap = new Bitmap(pictureBox.Width, pictureBox.Height);
var g = Graphics.FromImage(bitmap);
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit;
g.DrawString("AMBULANCE", font, brush, pictureBox.DisplayRectangle);
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipX);
pictureBox.Image = bitmap; // display bitmap on your form
结果:
答案 2 :(得分:1)
要点: Winforms使用Unicode编码,您可以使用“翻转”字符。 为此,您应该使用普通和翻转字符创建字典,并在反向后使用它。
var dict = new Dictionary<char, char>
{
{'A','A'},
{'B','ᙠ'},
{'C','Ɔ'},
{'D','ᗡ'},
// etc.
};
var str = "ABcd";
var mirror = new string(str.ToUpper().Reverse().Select(x=>dict[x]).ToArray());
答案 3 :(得分:0)
实现这一目标有两个部分。
首先,简单部分(假设您只处理基于拉丁语的字符),string.Reverse()
将颠倒字符的顺序。 Otherwise use a technique such as this from an answer to another question
第二部分有两种可能的解决方案。要么自己使用反转字符字体(free ones exist)并使用它来显示反转字符串。或者,使用http://txtn.us/mirror-words之类的网站构建一个看起来像反转的字符列表,然后设置字典以在它们之间进行映射,例如
var Dictionary<char, char> = new Dictionary<char, char>
{
...
{ 'e', 'ɘ' },
...
};
然后你可以进行逐字符替换并显示该字符串。显然,只有当你选择的字体中包含那些字符时才会起作用。