C# 如何旋转表单的内容?
我想旋转表单的内容(WinForms)。有可能以某种方式实现这种行为吗 我已经知道使用WPF会更容易,但是表单和逻辑已经实现了,此外,我应该使用Framework 2.0C# 如何旋转表单的内容?,c#,winforms,.net-2.0,C#,Winforms,.net 2.0,我想旋转表单的内容(WinForms)。有可能以某种方式实现这种行为吗 我已经知道使用WPF会更容易,但是表单和逻辑已经实现了,此外,我应该使用Framework 2.0 我也知道使用视频卡功能可能是可行的,但我只需要旋转一个特定的表单,而不是目标pc上运行的所有应用程序。如果您自己使用OnPaint绘制内容,您可以使用Graphics.Transform并向其提供旋转矩阵,或者使用Graphics.RotateTransform(浮动角度) 请注意,这并不是完美的。有些东西可能无法按预期旋转,
我也知道使用视频卡功能可能是可行的,但我只需要旋转一个特定的表单,而不是目标pc上运行的所有应用程序。如果您自己使用
OnPaint
绘制内容,您可以使用Graphics.Transform
并向其提供旋转矩阵,或者使用Graphics.RotateTransform(浮动角度)
请注意,这并不是完美的。有些东西可能无法按预期旋转,例如文本和图像。基本上,您不能这样做。有两种可能的方法来解决这个问题
您可以创建一个wpf窗口,其中包含您的内容,然后对其应用旋转变换吗 最后,我通过克隆表单和包含的所有控件(如果有人想查看代码,只需注释)来解决这个问题,并继续逐个旋转它们
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)
你是说把它旋转90度,让它仍能正常工作吗?我想把它旋转180度,这背后有很好的理由,解释太长了。不幸的是,我无法重新绘制内容。我有几十个甚至更多的已经发展的形式,充满了物体,我需要旋转。