private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Rectangle rect = new Rectangle(90, 40, 200, 100);
            Rectangle rect1 = new Rectangle(rect.X + rect.Width / 2, rect.Y + rect.Height / 2, 3, 3);
            e.Graphics.DrawEllipse(new Pen(Color.Blue, 3), rect);
            e.Graphics.DrawRectangle(new Pen(Color.Blue, 1), rect);
            e.Graphics.FillEllipse(Brushes.Blue, rect1);
            e.Graphics.RotateTransform(30.0F);
            e.Graphics.DrawEllipse(new Pen(Color.Red, 3), rect);
            e.Graphics.DrawRectangle(new Pen(Color.Red, 1), rect);
            e.Graphics.FillEllipse(Brushes.Red, rect1);
        }
得到的效果图,怎样将中心点对其

解决方案 »

  1.   

    楼主再加一个e.Graphics.TranslateTransform调整一下原点
      

  2.   

    下面的错误在哪儿呢?
    private void Form1_Paint(object sender, PaintEventArgs e)
            {
                Rectangle rect = new Rectangle(90, 40, 200, 100);
                Rectangle rect1 = new Rectangle(rect.X + rect.Width / 2, rect.Y + rect.Height / 2, 3, 3);
                float offsetX = (float)Math.Cos(45) * (rect.X + rect.Width / 2);
                float offsetY = -(float)Math.Sin(45) * (rect.Y + rect.Height / 2);
                float r = (float)Math.Sqrt(rect.X * rect.X + rect.Y * rect.Y);
                //e.Graphics.DrawEllipse(new Pen(Color.Black, 1), -r, -r, r * 2, r * 2);
                e.Graphics.DrawEllipse(new Pen(Color.Blue, 3), rect);
                e.Graphics.DrawRectangle(new Pen(Color.Blue, 1), rect);
                e.Graphics.FillEllipse(Brushes.Blue, rect1);            //Matrix myMatrix = new Matrix();
                //myMatrix.Rotate(30);
                //myMatrix.Scale(1, 2, MatrixOrder.Append);
                //myMatrix.Translate(offsetX, offsetY, MatrixOrder.Append);
                //e.Graphics.Transform = myMatrix;
                e.Graphics.RotateTransform(30.0F);
                e.Graphics.TranslateTransform(offsetX, offsetY,System.Drawing.Drawing2D.MatrixOrder.Append);
                e.Graphics.DrawEllipse(new Pen(Color.Red, 3), rect);
                e.Graphics.DrawRectangle(new Pen(Color.Red, 1), rect);
                e.Graphics.FillEllipse(Brushes.Red, rect1);
            }
      

  3.   

    http://topic.csdn.net/u/20091126/12/5328a931-8f78-44cd-af9c-a15f33637e73.html