比方说,我想旋转30度。
不知道应该怎么做,有没有类似graphics下的RotateTransform的函数。
请教了。

解决方案 »

  1.   

    理论上是可以的。但是我真,真的没功夫写例子给你。但可以给你个思路。
    1。你可以参考异形窗体的设计,来动态的修改窗体的外形
    2。重写OnPaint方法和OnPaintBackGround方法,绘制3D/2D矩形框,当然,要和你的实际窗体旋转的角度一致。绘制方法,看样子楼主是会的。
    同样的方法应用到窗体中每个控件上。这个想法估计可行,看你再做的更通用一些。就比较好了。如果做好了。可以的话,发给我一份哦。[email protected]
    ^_^
      

  2.   

    你可以对画图坐标进行旋转,但不好对一个Form窗体旋转,参考如下的代码对画图对象旋转一个指定的角度:private void button2_Click(object sender, EventArgs e)
    {
    Graphics g = this.CreateGraphics();
    Matrix x = new Matrix();
    x.Rotate(30, MatrixOrder.Append);
    g.Transform = x;
    g.DrawString("测试字符串", this.Font, SystemBrushes.ControlText, 0, 0);
    g.ResetTransform();
    g.DrawString("测试字符串", this.Font, SystemBrushes.ControlText, 0, 0);
    }
      

  3.   

    to wuyazhe(wyz&xyl):
    3x. 其实我的思路和你的一样,把窗体的region做仿射变化,窗体就转了。把paint的东西做RotateTransform就可以了。
    我怕这样做效率太低了,觉得ms底层可能有实现了的功能可以参考。
      

  4.   

    没有。所以要你重载OnPaintBackGround,这个重载的时候,不调用base.OnPaintBackGround方法,就不会慢了。