文本标签旋转45度
本文关键字:45度 旋转 文本标签 | 更新日期: 2023-09-27 18:15:36
我试图做一个相当简单的例子,通过插入下面的代码,在c#中转动文本标签…除此之外,我所做的就是创建一个带有标签label1的表单。我们的想法是让drawString从label1的0,0开始,然后向右上升。状态是,文本按预期编写,但X,Y坐标失败。欢迎提出好的建议:-)
protected override void OnPaint(PaintEventArgs e)
{
// Create string to draw.
String drawString = "Text to start at label start";
// Create font and brush.
Font drawFont = new Font("Arial", 8);
SolidBrush drawBrush = new SolidBrush(Color.Black);
// Create point for upper-left corner of drawing.
PointF drawPoint = label1.Location;
// Rotate -45 degrees
e.Graphics.RotateTransform(-45);
StringFormat formatter = new StringFormat();
formatter.LineAlignment = StringAlignment.Near;
formatter.Alignment = StringAlignment.Near;
// Draw string to screen.
e.Graphics.DrawString(drawString, drawFont, drawBrush, drawPoint, formatter);
e.Graphics.ResetTransform();
}
的问候NewBee
With
e.Graphics.RotateTransform(-45);
你所犯的错误是认为这将围绕标签旋转,而实际上它围绕画布的(0,0)点旋转。您可以通过将画布的(0,0)移动到标签,执行旋转,然后将其移回来解决这个问题。这样的
e.Graphics.TranslateTransform(drawPoint.X, drawPoint.Y);
e.Graphics.RotateTransform(-45);
e.Graphics.TranslateTransform(-drawPoint.X, -drawPoint.Y);
值得注意的是,这些变换背后的概念来自线性代数。在底层,所有这些方法一起构建一个称为转换矩阵的数据块,然后与标签中的每个像素坐标相乘,得到要绘制的实际像素坐标。也许更精通数学的人可以更深入地解释,但我就到此为止。