Принцип понятен!
Но я так понял, что сама матрици вращяеться относительно начала координат(верхний левый угол), а как сделать, что бы она вращалась относительно своего центра, а то у меня получаеться вот так
| Код | void DrawArrow(Graphics gr, /*Point start,*/ float angle) { //float x1 = start.X, y1 = start.Y;
// сохраняем старое состояние Graphics, чтобы потом его восстановить GraphicsState state = gr.Save();
// трансформация: сдвиг к точке start и поворот на угол //gr.TranslateTransform(x1, y1); gr.RotateTransform(angle); using (Pen pen = new Pen(Color.Red, 2f)) { GraphicsPath path; path = new GraphicsPath(new Point[]{ new Point(150,150), new Point(150,350), new Point(350,350), new Point(350,150), new Point(150,150) }, new byte[]{ (byte)PathPointType.Start, (byte)PathPointType.Line, (byte)PathPointType.Line, (byte)PathPointType.Line, (byte)PathPointType.Line }); gr.DrawPath(pen, path); }
// восстанавливаем старое состояние Graphics (убираем наши трансформации)\ gr.Restore(state); }
protected override void OnPaint(PaintEventArgs e) { DrawArrow(e.Graphics, /*new Point(0,0),*/ -40); }
|
|