gpt4 book ai didi

c# - 文本标签旋转 45 度

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:54 26 4
gpt4 key购买 nike

我试图通过插入下面的代码,在 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();
}

问候新蜜蜂

最佳答案

e.Graphics.RotateTransform(-45);

您犯的错误是认为它会围绕标签旋转,而实际上它是围绕 Canvas 的 (0, 0) 点旋转的。您可以通过将 Canvas 的 (0, 0) 移动到标签、执行旋转,然后将其移回来解决此问题。像这样

e.Graphics.TranslateTransform(drawPoint.X, drawPoint.Y);
e.Graphics.RotateTransform(-45);
e.Graphics.TranslateTransform(-drawPoint.X, -drawPoint.Y);

值得注意的是,这些变换背后的概念来自线性代数。在引擎盖下,所有这些方法共同构建一个称为转换矩阵的数据,然后与标签中的每个像素坐标相乘,得到要绘制的实际像素坐标。也许更精通数学的人可以更深入地解释,但我会就此打住。

关于c# - 文本标签旋转 45 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25044574/

26 4 0