如何实现图形的翻转?
四种翻转:无翻转,水平对称翻转,垂直对称翻转,水平垂直都翻转
我在做个画图工具,在调整图形大小的时候顺便也能对图形做翻转,怎么翻转就看如何调整图形了。请大家给个思路,我该如何实现这样的功能?要求所有的图形都能有这样的功能。

解决方案 »

  1.   

    Image Rotation in .NETC# Image/PictureBox Rotations
      

  2.   

    image.RotateFlip(RotateFlipType.Rotate90FlipX);
    遍历你的全部Image....
    下达这个....
    RotateFlipType请参照MSDN
      

  3.   

    http://msdn.microsoft.com/zh-cn/library/system.drawing.image.rotateflip.aspxhttp://msdn.microsoft.com/en-us/library/system.drawing.rotatefliptype.aspx
      

  4.   

    例子
    http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/a1e62e03-d732-444d-bb3d-6e7907fd5e16
      

  5.   

    Graphics.TranslateTransform  
    string filePath =@"C:\a.jpg";  
      using (Bitmap bm = new Bitmap(500,500))  
      {  
      using (Graphics g = Graphics.FromImage(bm))  
      {  
      g.Clear(Color.Wheat);  
      g.TranslateTransform(0, 0, MatrixOrder.Prepend);  
      g.RotateTransform(45);  
      FontFamily ff = new FontFamily("宋体");  
      Font f =new Font(ff,10);  
      Brush b = new SolidBrush(Color.Black);  
      StringFormat sf = new StringFormat();  
      g.DrawString("", f, b, new PointF(10, 10), sf);  
      g.DrawString("", f, b, new PointF(10, 10 + 30 + 10), sf);  
      }  
      bm.Save(filePath, ImageFormat.Jpeg);  
      }  
    http://www.codeproject.com/KB/graphics/RotatePictureBox.aspx
      

  6.   

    c# GDI+ 完整例子,各种特效,非常完整的范例
    http://download.csdn.net/source/2090762
      

  7.   

    http://blog.csdn.net/cloudhsu/archive/2010/08/30/5849809.aspx
    像这样??
      

  8.   

    e.Graphics.TranslateTransform(Pcenter.X, Pcenter.Y);
    e.Graphics.RotateTransform(-m_i4Angle);
    e.Graphics.TranslateTransform(-Pcenter.X, -Pcenter.Y);
    .....//绘图
    e.Graphics.ResetTransform();
    这段代码是做图片绘制时的翻转.......
    前二句是重点,指定翻转的座标,然后翻转角度.....
      

  9.   

    谢谢大家,我已经解决问题了,也就是用的坐标轴翻转                    this.m_Start = this.m_MoveStart;
                        this.m_End = this.m_MoveEnd;
                        Rectangle rect = this.GetBound();
                        PointF pf = new PointF();
                        pf.X = this.m_Start.X - (this.m_Start.X - this.m_End.X) / 2;
                        pf.Y = this.m_Start.Y - (this.m_Start.Y - this.m_End.Y) / 2;
                        int angle = 0;
                        if (this.m_Start.X > this.m_End.X)
                        {
                            angle += 180;
                        }
                        else if (this.m_Start.Y > this.m_End.Y)
                        {
                            angle += 90;
                        }
                        angle = angle % 360;
                        g.TranslateTransform(pf.X, pf.Y);
                        g.RotateTransform(angle);
                        g.TranslateTransform(-pf.X, -pf.Y);
                        
                        using (Pen pen = new Pen(Color.Black))
                        {
                            g.DrawRectangle(new Pen(Color.Black), rect);
                            LinearGradientBrush brush = new LinearGradientBrush(rect, Color.SkyBlue, Color.White, LinearGradientMode.BackwardDiagonal);
                            rect.Inflate(-1, -1);
                            g.FillRectangle(new LinearGradientBrush(rect, Color.SkyBlue, Color.White, LinearGradientMode.BackwardDiagonal), rect);
                            brush.Dispose();
                        }
                        g.ResetTransform();