我想旋转表单(WinForms)的内容。是否有可能以某种方式实现该行为?
我已经知道使用WPF会更容易,但表单和逻辑已经实现,此外我应该使用Framework 2.0。
我也知道使用可能的视频卡功能,但我只需要旋转一个特定的表单,而不是所有在目标PC上运行的应用程序。
答案 0 :(得分:3)
如果您使用OnPaint
自行绘制内容,则可以使用Graphics.Transform
并将其作为轮播矩阵或使用Graphics.RotateTransform(float angle)
。
请注意,这并不完美。有些东西可能无法按预期旋转,例如文本和图像。
答案 1 :(得分:0)
基本上你不能这样做。有两种可能的方法来解决问题
答案 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)