抽绳旋转长文本180

时间:2016-07-13 00:43:30

标签: c# winforms drawstring

我使用drawtring方法在矩形内部绘制文本,..我想将文本旋转180度所以我使用了这段代码

   Rectangle displayRectangleh =
       new Rectangle(new Point((int)posh.X, (int)posh.Y), new Size(rectwdh, recth));

   StringFormat format1h = new StringFormat(StringFormatFlags.DirectionVertical);
   format1h.LineAlignment = StringAlignment.Center;
   format1h.Alignment = StringAlignment.Center;
   b = new SolidBrush(Color.Black);
   e.ChartGraphics.Graphics.TranslateTransform((float)rectwdh / 2 + posh.X, recth / 2 + posh.Y);
   e.ChartGraphics.Graphics.RotateTransform(180);
   e.ChartGraphics.Graphics.TranslateTransform(-((float)rectwdh / 2 + posh.X), -(recth / 2 + posh.Y));
            Font boldFonth = new Font(FontFamily.GenericSansSerif, 16, FontStyle.Bold, GraphicsUnit.Pixel, 1, true);
   e.ChartGraphics.Graphics.DrawRectangle(new Pen(Color.Black, 2), displayRectangleh);
   e.ChartGraphics.Graphics.DrawString("This is rotated long text test ", boldFonth, b, (RectangleF)displayRectangleh, format1h);
   e.ChartGraphics.Graphics.ResetTransform();

其中posh.X和posh.Y(重新定位),rectwdh(矩形宽度)和recth(矩形高度)

它适用于短文本,但对于长文本,新行将位于我的旧行之上,请参阅下一张图片:

enter image description here

我甚至尝试添加新行字符\ n但结果相同。 我的问题:如何在矩形内旋转文本180并以正确的对齐方式结束?

1 个答案:

答案 0 :(得分:0)

以前从未使用过StringFormat API,我随机地对它进行了捣乱,直到找到了这个:

StringFormat format1h = new StringFormat(StringFormatFlags.DirectionVertical | StringFormatFlags.DirectionRightToLeft);