【GDI+】旋转文本

418 阅读1分钟

绘制Label上的文本内容,先获取一些参数

Graphics g = this.CreateGraphics();
//清除
g.Clear(BackColor);

//位置
Point point = lbTest.Location;
//文本
string text = lbTest.Text;
//字体
Font font = lbTest.Font;
//颜色
Brush brush = Brushes.Black;
//宽度
float width = lbTest.Width;
//高度
float height = lbTest.Height;

旋转

都是按照文本的左上角来旋转的

方式一:

//旋转前
g.DrawString(text, font, brush, point.X, point.Y);

//设置旋转点
g.TranslateTransform(point.X + height, point.Y);
//旋转90度
g.RotateTransform(90);
//绘制文本
g.DrawString(text, font, brush, 0, 0);
//取消旋转,绘制完成记得取消旋转,不然后面绘制的内容也会旋转
g.ResetTransform();

方式二:

Matrix matrix = g.Transform;
//以一个点为原点旋转90度
matrix.RotateAt(90, new PointF(point.X + height / 2, point.Y + height / 2));
g.Transform = matrix;
g.DrawString(text, font, brush, point.X, point.Y);
//取消旋转
g.ResetTransform();

旋转前,以向右为X轴正方向,向下为Y轴正方向
旋转后,以向下为X轴正方向,向左为Y轴正方向
可以对x,y参数调整绘制文本位置

看看旋转前后的效果

以第一中方式为例,如果不对x,y进行调整,直接设置旋转点

//设置旋转点
g.TranslateTransform(point.X, point.Y);
//旋转90度
g.RotateTransform(90);
//绘制文本
g.DrawString(text, font, brush, 0, 0);
//取消旋转,绘制完成记得取消旋转,不然后面绘制的内容也会旋转
g.ResetTransform();

效果是这样的