变换

变换有:缩放、平移、旋转以及错位变换。(通用坐标系下)

用于变换的方法如下:


缩放变换:

Graphics g = e.Graphics;
            g.FillRectangle(Brushes.White, this.ClientRectangle);

            g.DrawRectangle(Pens.Black, 10, 10, 50, 50);
            g.DrawEllipse(Pens.Black, 10, 10, 10, 10);

            g.ScaleTransform(2.0f, 3.0f);

            g.DrawRectangle(Pens.Black, 10, 10, 50, 50);
            g.DrawEllipse(Pens.Black, 10, 10, 10, 10);

如图:

X方向扩大了两倍,Y方向扩大了三倍。同事笔画宽度也在方向上进行了扩大。


平移变换:

Graphics g = e.Graphics;
            g.FillRectangle(Brushes.White, this.ClientRectangle);
            for (int i = 1; i <= 5; ++i)
            {
                g.DrawRectangle(Pens.Black, 20, 20, 60, 100);
                g.TranslateTransform(4, 20);
            }

如图:

每次都向X方向移动4,向Y方向移动20个像素。这个变换是积累的。如果想要非积累的,使用ResetTransform方法。


旋转变换:

Graphics g = e.Graphics;
            g.FillRectangle(Brushes.White, this.ClientRectangle);
            Font f = new Font("Times New Roman", 16);

            for (float angle = 0; angle < 360; angle += 45)
            {
                g.ResetTransform();
                g.TranslateTransform(ClientRectangle.Width / 2, ClientRectangle.Height / 2);
                g.RotateTransform(angle);
                g.DrawString("Hello,World", f, Brushes.Black, 50, 0);
            }

如图:


错位变换:

Graphics g = e.Graphics;
            g.FillRectangle(Brushes.White, ClientRectangle);
            Matrix m = new Matrix();

            m.Shear(0.6f, 0);
            g.DrawRectangle(Pens.Black, 10, 10, 50, 50);
            g.MultiplyTransform(m);
            g.DrawRectangle(Pens.Black, 70, 10, 50, 50);

如图:

这个是由矩阵来的,比较麻烦。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值