Mit ein bisschen Zeichnung Komplikation würden Sie es nennen. Meine Mathe ist ein bisschen rostig, wenn es um Matrizen und Zeichendrehungen auf Formen geht. Hier ist ein Stück Code:Verwenden einer Matrix, um Rechtecke einzeln zu drehen
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;
}
wenn ich drehen (was ich denke, sollte r1 sein), die beide R1 und R2 drehen. Ich muss in der Lage sein, jede Form einzeln zu drehen, wenn ich weitere Formen hinzufüge.
Vielen Dank. Das Beispiel hat mir sehr geholfen. Ich fand, dass ich nur die "g.ResetTransform()" vermisste; Anruf. Sobald ich es bekommen habe, hat es meine Wand umgeworfen. Ich danke dir sehr! – Orthmius