C# 如何使用图形对象以特定角度旋转矩形?
我试过这个:C# 如何使用图形对象以特定角度旋转矩形?,c#,.net,rotation,transformation,C#,.net,Rotation,Transformation,我试过这个: g.RotateTransform(degrees); 但什么也没发生。我有一个图形对象和一个矩形对象,我用这种方法绘制: g.FillRectangle(new TextureBrush(Image.FromFile(@"D:\LOVE&LUA\Pictures\yellowWool.png")), rectangle); 我需要旋转矩形,然后再画一次 请用代码示例和简单解释回答 编辑:以下是我正在使用的实际代码: public void Draw(G
g.RotateTransform(degrees);
但什么也没发生。我有一个图形对象和一个矩形对象,我用这种方法绘制:
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);
}
每一帧我调用这个函数,我使用表单的绘画事件的e.Graphics
对象来绘制图形,我有一个定时器
开关,它只调用this.Refresh()代码>
编辑2:
好的,我已经玩了一些变换,并且旋转变换旋转graphycs对象的整个cordinate系统,我只需要旋转矩形,而不改变cordinate系统。你可以尝试使用带有旋转的矩阵方法,使旋转围绕矩形居中:
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()
会将图形恢复到正常处理状态。是否按此顺序调用这两行?你能展示整个代码片段(包括实际度数)吗?没有TranslateTransform,这很麻烦@汉斯帕桑-这是相当神秘的。。。要解释一下吗?@Erno-默认情况下它会绕左上角旋转。如果不使用TT移动坐标系,矩形会旋转到看不见的地方。@HansPassant-当它只有10度时不会,对吗?当我使用ResetTransform()时,旋转不会也重置回正常状态吗?@Bosak不适用于调用的一个FillRectangle。这段代码基本上是说,开始画旋转,画东西,然后停止画旋转。希望有帮助。