如何翻弦?

时间:2015-06-01 07:56:08

标签: c# winforms

如何在c#应用程序中翻转字符串,例如:" AMBULANCE "被视为镜像的文本。我不知道从哪里开始.im使用c# 表单应用程序

我试过翻转字符串,但有没有可能翻转字符串(如镜像)?

赞:ƎƆИA⅃UᙠMA

这与SO post

中没有相反

4 个答案:

答案 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);
}

输出:

The text reflected about Y

您还可以使用Graphics.RotateTransform()来旋转文本,并使用Graphics.ScaleTransform(1, -1)将其反转并镜像它:

enter image description here

答案 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

结果:

enter image description here

答案 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', 'ɘ' },
    ...
};

然后你可以进行逐字符替换并显示该字符串。显然,只有当你选择的字体中包含那些字符时才会起作用。