2011-11-18 67 views
4

我已经试过这样:如何使用Graphics对象以特定的程度旋转RectangleF?

g.RotateTransform(degrees); 

但没有happens.I有一个图形对象和使用这种方法一个矩形对象女巫IM绘图:

g.FillRectangle(new TextureBrush(Image.FromFile(@"D:\LOVE&LUA\Pictures\yellowWool.png")), rectangle); 

,我需要以某种方式旋转矩形再次绘制它。

请与代码示例请与简单的解释。

编辑:这是我使用的实际代码:

 public void Draw(Graphics g,PointF location,Color clearColor) 
    { 
     rectangle.Location = location; 
     g.Clear(clearColor); 
     g.RotateTransform(10); 
     //g.FillRectangle(new SolidBrush(Color), rectangle); 
     g.FillRectangle(new TextureBrush(Image.FromFile(@"D:\LOVE&LUA\Pictures\yellowWool.png")), rectangle); 
    } 

每一帧我把这种功能,我使用窗体的Paint事件的e.Graphics对象的图形和我有一个timer女巫只调用this.Refresh();

编辑2: OK我打一点与转换和g.RotateTransform旋转graphycs整个cordinate系统对象,我需要在不改变cordinate系统

0123仅旋转矩形
+0

你是按这个顺序调用两条线吗?你能否显示整个代码片段(包括诸如实际度数之类的东西) –

+2

没有TranslateTransform,那很麻烦。 http://www.bobpowell.net/transformations.htm –

+0

@HansPassant - 这很神秘......照顾解释? –

回答

1

您可以尝试使用矩阵与RotateAt方法来围绕着矩形旋转:

using (Matrix m = new Matrix()) { 
    m.RotateAt(10, new PointF(rectangle.Left + (rectangle.Width/2), 
          rectangle.Top + (rectangle.Height/2))); 
    g.Transform = m; 
    using (TextureBrush tb = new TextureBrush(Image.FromFile(@"D:\LOVE&LUA\Pictures\yellowWool.png")) 
    g.FillRectangle(tb, rectangle); 
    g.ResetTransform(); 
} 

ResetTransform()会后打开图形恢复正常处理。

+0

当我使用ResetTransform()时,旋转也不会恢复到正常状态吗? – Bosak

+0

@Bosak不适用于被调用的一个FillRectangle。这段代码基本上说,开始绘制一个旋转,绘制东西,然后停止绘制旋转。希望有所帮助。 – LarsTech