Có một chút biến chứng vẽ mà bạn sẽ gọi nó. Toán học của tôi hơi bị gỉ khi nói đến Ma trận và vẽ các hình tròn. Dưới đây là một chút mã:Sử dụng ma trận để xoay hình chữ nhật riêng lẻ
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;
}
khi tôi xoay (điều tôi nghĩ là r1) cả xoay r1 và r2. Tôi cần có khả năng xoay từng hình dạng riêng lẻ khi tôi thêm nhiều hình dạng.
Cảm ơn bạn. Ví dụ thực sự hữu ích. Tôi thấy tôi chỉ thiếu "g.ResetTransform();" gọi điện. Một khi tôi nhận được nó đặt nó rơi xuống tường của tôi và trở lại theo dõi. Cảm ơn bạn rất nhiều! – Orthmius