Po odrobinie komplikacji rysunku nazwałbyś to. Moja matematyka jest nieco zardzewiała, jeśli chodzi o Matryce i rysowanie rotacji kształtów. Oto fragment kodu:Używanie macierzy do obracania prostokątów pojedynczo
private void Form1_Paint(object sender, PaintEventArgs e)
{
g = e.Graphics;
g.SmoothingMode = SmoothingMode.HighQuality;
DoRotation(e);
g.DrawRectangle(new Pen(Color.Black), r1);
g.DrawRectangle(new Pen(Color.Black), r2);
// draw a line (PEN, CenterOfObject(X, Y), endpoint(X,Y))
g.DrawLine(new Pen(Color.Black), new Point((r1.X + 50), (r1.Y + 75)), new Point((/*r1.X + */50), (/*r1.Y - */25)));
this.lblPoint.Text = "X-pos: " + r1.X + " Y-pos: " + r1.Y;
//this.Invalidate();
}
public void DoRotation(PaintEventArgs e)
{
// move the rotation point to the center of object
e.Graphics.TranslateTransform((r1.X + 50), (r1.Y + 75));
//rotate
e.Graphics.RotateTransform((float)rotAngle);
//move back to the top left corner of the object
e.Graphics.TranslateTransform(-(r1.X + 50), -(r1.Y + 75));
}
public void Form1_KeyDown(object sender, KeyEventArgs e)
{
case Keys.T:
rotAngle += 1.0f;
}
kiedy obracać (co myślę powinny być R1), oba R1 i R2 obracać. Muszę być w stanie obracać każdy kształt indywidualnie, dodając kolejne kształty.
Dziękuję. Przykład naprawdę pomógł. Odkryłem, że brakuje mi tylko "g.ResetTransform();" połączenie. Kiedy już to zrobiłem, powaliłem moją ścianę i Powrót na tor. Dziękuję bardzo! – Orthmius