c#:在自定义控件中旋转文本

问题描述:

我正在尝试旋转标签内的一些文本。我有一个cusom标签,可以让我控制文本渲染过程。c#:在自定义控件中旋转文本

protected override void OnPaint (PaintEventArgs pe) 
{ 
    Graphics g = pe.Graphics; 
    g.RotateTransform(angle); 

    g.drawString(text); 

    g.ResetTransform(); 
} 

我遇到的问题是旋转似乎出现在控制的起点附近,即坐标(0,0)。有没有一种方法可以让文本围绕控件的中心而不是oragin旋转?

我知道函数'g.RotateTransform()',所以一个可能的解决方案是旋转文本,然后将其转换为控件的中心。如果这是管理这项工作的唯一方法,那么我是否可以通过一种通用的方式来计算转换,以确保文本处于控制的中心?

感谢

周围任意点的旋转通常是点到原点,然后旋转和平移的翻译回来。问题可能是确定旋转后文本的尺寸以相应地移回文本。