如何旋转表格的内容?

时间:2011-03-01 16:10:20

标签: c# winforms .net-2.0

我想旋转表单(WinForms)的内容。是否有可能以某种方式实现该行为?

我已经知道使用WPF会更容易,但表单和逻辑已经实现,此外我应该使用Framework 2.0。

我也知道使用可能的视频卡功能,但我只需要旋转一个特定的表单,而不是所有在目标PC上运行的应用程序。

4 个答案:

答案 0 :(得分:3)

如果您使用OnPaint自行绘制内容,则可以使用Graphics.Transform并将其作为轮播矩阵或使用Graphics.RotateTransform(float angle)

请注意,这并不完美。有些东西可能无法按预期旋转,例如文本和图像。

答案 1 :(得分:0)

基本上你不能这样做。有两种可能的方法来解决问题

  1. 查找可以轮换的第三方控件
  2. 重写所有控件。你应该想要旋转的ALL控件的ovveride paint方法,所以他们将为所有者绘制。

答案 2 :(得分:0)

您可以创建一个wpf窗口,其中WindowsFormHost包含您的内容,然后对其应用旋转变换吗?

答案 3 :(得分:0)

最后,我通过克隆表单和包含的所有控件解决了这个问题(如果有人想查看代码只是注释)并继续逐个旋转它们。

Private Shared Sub RotateForm180(frm As Form)

    For Each ctrl As Control In frm.Controls
        RotateControl180(ctrl)
    Next

End Sub

Private Shared Sub RotateControl180(ctrl As Control)

    Dim oScreenRect As Rectangle = ctrl.Parent.RectangleToScreen(ctrl.Parent.ClientRectangle)

    ctrl.Location = New Point(oScreenRect.Width - (ctrl.Location.X + ctrl.Width),
                              oScreenRect.Height - (ctrl.Location.Y + ctrl.Height))

    For Each c As Control In ctrl.Controls
        RotateControl180(c)
    Next

End Sub

表格背景也可以旋转。

_BackgroundImage.RotateFlip(RotateFlipType.Rotate180FlipNone)