我正在通过将图像分层叠加到另一个上来构建位图,并且当完成后我想要在边缘写入文本。顶部和底部很简单,因为它们是水平书写的,但我更倾向于将文本垂直写入左侧和右侧,因此它们不会占用太多空间。旋转字符串以在位图上垂直写入
Graphics.DrawString方法不允许您指定旋转角度;还有什么其他方法?
我正在通过将图像分层叠加到另一个上来构建位图,并且当完成后我想要在边缘写入文本。顶部和底部很简单,因为它们是水平书写的,但我更倾向于将文本垂直写入左侧和右侧,因此它们不会占用太多空间。旋转字符串以在位图上垂直写入
Graphics.DrawString方法不允许您指定旋转角度;还有什么其他方法?
我想你可以从this answer about rotating text for printing,我写了一段时间前得到一些指点。
这里是一个教程,可以帮助 http://www.c-sharpcorner.com/Blogs/BlogDetail.aspx?BlogId=580
我相信StringFormatFlags.DirectionVertical是你在找什么
也许您可以将位图旋转90度并将文本写入位图顶部 - 然后再次旋转并写入下一侧的文本 - 这会让您在边缘周围运行CW/CCW文本。
如果你想要水平横跨顶部和底部并垂直于左侧和右侧,我建议测量(或assumning)你需要写的最大字符的大小,然后用它来定位绘制的文本 - 一个字符在一次 - 首先在左边然后右边然后移动一个字符并且重复。你当然可以在整体左侧,然后在右侧。只需使用char的宽度从右侧插入,并使用char的高度在字符之间垂直偏移。
例如
1 2 OR 1 4 GIVING C D
3 4 2 5 A O
5 6 3 6 T G
可能不是最优雅的解决方案,但可以帮助你。
为此,您可以使用logical font。但这是一个痛苦 - 你最好使用Fredrik的答案(除非你在Compact Framework中这样做,而RotateTransform不可用)。