如何实现图形的翻转?
四种翻转:无翻转,水平对称翻转,垂直对称翻转,水平垂直都翻转
我在做个画图工具,在调整图形大小的时候顺便也能对图形做翻转,怎么翻转就看如何调整图形了。请大家给个思路,我该如何实现这样的功能?要求所有的图形都能有这样的功能。
四种翻转:无翻转,水平对称翻转,垂直对称翻转,水平垂直都翻转
我在做个画图工具,在调整图形大小的时候顺便也能对图形做翻转,怎么翻转就看如何调整图形了。请大家给个思路,我该如何实现这样的功能?要求所有的图形都能有这样的功能。
遍历你的全部Image....
下达这个....
RotateFlipType请参照MSDN
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/a1e62e03-d732-444d-bb3d-6e7907fd5e16
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
http://download.csdn.net/source/2090762
像这样??
e.Graphics.RotateTransform(-m_i4Angle);
e.Graphics.TranslateTransform(-Pcenter.X, -Pcenter.Y);
.....//绘图
e.Graphics.ResetTransform();
这段代码是做图片绘制时的翻转.......
前二句是重点,指定翻转的座标,然后翻转角度.....
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();