GDI+(3.图像显示)

1.图像旋转

private void button1_Click(object sender, EventArgs e)
{
    //以任意角度旋转显示图像
    Graphics g = this.panel1.CreateGraphics();
    float MyAngle = 0;//旋转的角度
    while (MyAngle < 360)
    {
        TextureBrush MyBrush = new TextureBrush(MyBitmap);
        this.panel1.Refresh();
        MyBrush.RotateTransform(MyAngle);
        g.FillRectangle(MyBrush, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height);
        MyAngle += 0.5f;
        System.Threading.Thread.Sleep(50);
    }
}

2.以不同透明度显示图像

private void button1_Click(object sender, EventArgs e)
{
    //以不同的透明度显示图像      
    Graphics g = this.panel1.CreateGraphics();
    g.SmoothingMode = SmoothingMode.AntiAlias;
    TextureBrush MyBrush = new TextureBrush(MyBitmap);
    g.FillRectangle(MyBrush, this.panel1.ClientRectangle);
    for (int i = 0; i < 255; i++)
    {//由透明变为不透明
        g.FillRectangle(new SolidBrush(Color.FromArgb(i,Color.DarkSlateGray)), this.panel1.ClientRectangle);
        System.Threading.Thread.Sleep(100);
    }   
}

3.以不同的分辨率来显示

private void button1_Click(object sender, EventArgs e)
{
    //以不同的分辨率显示图像
    Graphics g = this.panel1.CreateGraphics();
    for (int i = 10; i < this.panel1.Height; i += 2)
    {
        g.Clear(Color.Gray);
        MyBitmap.SetResolution(i, i);
        g.DrawImage(MyBitmap, 0, 0);
        System.Threading.Thread.Sleep(100);
    }
}

4.图像翻转

private void button1_Click(object sender, EventArgs e)
{
    //以不同翻转方式显示图像
    Graphics g = this.panel1.CreateGraphics();
    for (int i = 0; i < 17; i++)
    {
        switch (i)
        {
            case 0:
                MyBitmap.RotateFlip(RotateFlipType.RotateNoneFlipX);
                break;
            case 1:
                MyBitmap.RotateFlip(RotateFlipType.Rotate180FlipNone);
                break;
            case 2:
                MyBitmap.RotateFlip(RotateFlipType.Rotate180FlipX);
                break;
            case 3:
                MyBitmap.RotateFlip(RotateFlipType.Rotate180FlipXY);
                break;
            case 4:
                MyBitmap.RotateFlip(RotateFlipType.Rotate180FlipY);
                break;
            case 5:
                MyBitmap.RotateFlip(RotateFlipType.Rotate270FlipNone);
                break;
            case 6:
                MyBitmap.RotateFlip(RotateFlipType.Rotate270FlipX);
                break;
            case 7:
                MyBitmap.RotateFlip(RotateFlipType.Rotate270FlipXY);
                break;
            case 8:
                MyBitmap.RotateFlip(RotateFlipType.Rotate270FlipY);
                break;
            case 9:
                MyBitmap.RotateFlip(RotateFlipType.Rotate90FlipNone);
                break;
            case 10:
                MyBitmap.RotateFlip(RotateFlipType.Rotate90FlipX);
                break;
            case 11:
                MyBitmap.RotateFlip(RotateFlipType.Rotate90FlipXY);
                break;
            case 12:
                MyBitmap.RotateFlip(RotateFlipType.Rotate90FlipY);
                break;
            case 13:
                MyBitmap.RotateFlip(RotateFlipType.RotateNoneFlipNone);
                break;
            case 14:
                MyBitmap.RotateFlip(RotateFlipType.RotateNoneFlipX);
                break;
            case 15:
                MyBitmap.RotateFlip(RotateFlipType.RotateNoneFlipXY);
                break;
            case 16:
                MyBitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
                break;
        }
        g.Clear(Color.White);
        g.DrawImage(MyBitmap, 0, 0);
        System.Threading.Thread.Sleep(1000);
    } 
}

5.四周渐进扩散方式显示图像(图像由小到大)

private void button1_Click(object sender, EventArgs e)
{
    //以四周扩散方式显示图像
    try
    {
        int width = this.MyBitmap.Width; //图像宽度	
        int height = this.MyBitmap.Height; //图像高度
        //取得Graphics对象
        Graphics g = this.panel1.CreateGraphics();
        g.Clear(Color.Gray); //初始为全灰色
        for (int i = 0; i <= width / 2; i++)
        {
           int j = Convert.ToInt32 (i*(Convert.ToSingle(height) / Convert.ToSingle(width)));
            Rectangle DestRect = new Rectangle(width / 2 - i, height/2-j, 2 * i, 2*j);
            Rectangle SrcRect = new Rectangle(0, 0, MyBitmap.Width, MyBitmap.Height);
            g.DrawImage(MyBitmap, DestRect, SrcRect, GraphicsUnit.Pixel);
            System.Threading.Thread.Sleep(10);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "信息提示");
    }
}

6.上下渐进拉伸 (同理:左右渐进拉伸)

private void button1_Click(object sender, EventArgs e)
{
    //以从上向下拉伸方式显示图像
    try
    {
        int width = this.MyBitmap.Width; //图像宽度	
        int height = this.MyBitmap.Height; //图像高度
        Graphics g = this.panel1.CreateGraphics();
        g.Clear(Color.Gray); //初始为全灰色
        for (int y = 1; y <= height; y++)
        {
            Bitmap bitmap=MyBitmap.Clone (new Rectangle(0,0,width ,y),System.Drawing .Imaging.PixelFormat .Format24bppRgb );
            g.DrawImage (bitmap,0,0);
            System.Threading.Thread.Sleep(10);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "信息提示");
    }
}

7.上下反转       (左右反转)

private void button1_Click(object sender, EventArgs e)
{
    //以上下反转方式显示图像
    try
    {
        int width = this.MyBitmap.Width; //图像宽度	
        int height = this.MyBitmap.Height; //图像高度              
        Graphics g = this.panel1.CreateGraphics();
        g.Clear(Color.Gray); //初始为全灰色
        for (int i = -width / 2; i <= width / 2; i++)
        {
            g.Clear(Color.Gray); //初始为全灰色
            int j = Convert.ToInt32(i * (Convert.ToSingle(height) / Convert.ToSingle(width)));
            Rectangle DestRect = new Rectangle(0, height / 2 -j, width, 2 * j);
            Rectangle SrcRect = new Rectangle(0, 0, MyBitmap.Width, MyBitmap.Height);
            g.DrawImage(MyBitmap, DestRect, SrcRect, GraphicsUnit.Pixel);
            System.Threading.Thread.Sleep(10);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "信息提示");
    }
}

8.上下对接       (左右对接)

private void button1_Click(object sender, EventArgs e)
{
    //以上下对接方式显示图像
    try
    {
        int width = this.pictureBox1.Width; //图像宽度	
        int height = this.pictureBox1.Height; //图像高度
        Graphics g = this.panel1.CreateGraphics();
        g.Clear(Color.Gray); //初始为全灰色
        Bitmap bitmap = new Bitmap(width, height);
        int x = 0;
        while (x <= height / 2)
        {
            for (int i = 0; i <= width - 1; i++)
            {
                bitmap.SetPixel(i, x, MyBitmap.GetPixel(i, x));
            }
            for (int i = 0; i <= width - 1; i++)
            {
                bitmap.SetPixel(i, height - x - 1, MyBitmap.GetPixel(i, height - x - 1));
            }
            x++;
            this.panel1.Refresh();
            g.DrawImage (bitmap,0,0);
            System.Threading.Thread.Sleep(10);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "信息提示");
    }
}

9.淡入淡出

private void button1_Click(object sender, EventArgs e)
{
    //淡入显示图像
    try
    {
        Graphics g = this.panel1.CreateGraphics();
        g.Clear(Color.Gray);
        int width = MyBitmap.Width;
        int height = MyBitmap.Height;
        ImageAttributes attributes = new ImageAttributes();
        ColorMatrix matrix = new ColorMatrix();
        //创建淡入颜色矩阵
        matrix.Matrix00 = (float)0.0;
        matrix.Matrix01 = (float)0.0;
        matrix.Matrix02 = (float)0.0;
        matrix.Matrix03 = (float)0.0;
        matrix.Matrix04 = (float)0.0;
        matrix.Matrix10 = (float)0.0;
        matrix.Matrix11 = (float)0.0;
        matrix.Matrix12 = (float)0.0;
        matrix.Matrix13 = (float)0.0;
        matrix.Matrix14 = (float)0.0;
        matrix.Matrix20 = (float)0.0;
        matrix.Matrix21 = (float)0.0;
        matrix.Matrix22 = (float)0.0;
        matrix.Matrix23 = (float)0.0;
        matrix.Matrix24 = (float)0.0;
        matrix.Matrix30 = (float)0.0;
        matrix.Matrix31 = (float)0.0;
        matrix.Matrix32 = (float)0.0;
        matrix.Matrix33 = (float)0.0;
        matrix.Matrix34 = (float)0.0;
        matrix.Matrix40 = (float)0.0;
        matrix.Matrix41 = (float)0.0;
        matrix.Matrix42 = (float)0.0;
        matrix.Matrix43 = (float)0.0;
        matrix.Matrix44 = (float)0.0;
        matrix.Matrix33 = (float)1.0;
        matrix.Matrix44 = (float)1.0;
        //从0到1进行修改色彩变换矩阵主对角线上的数值
        //使三种基准色的饱和度渐增
        Single count = (float)0.0;
        while (count < 1.0)
        {
            matrix.Matrix00 = count;
            matrix.Matrix11 = count;
            matrix.Matrix22 = count;
            matrix.Matrix33 = count;
            attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
            g.DrawImage(MyBitmap, new Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel, attributes);
            System.Threading.Thread.Sleep(200);
            count = (float)(count + 0.02);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "信息提示");
    }
}

private void button3_Click(object sender, EventArgs e)
{
    //淡出显示图像
    try
    {
        Graphics g = this.panel1.CreateGraphics();
        g.Clear(Color.Gray);
        int width = MyBitmap.Width;
        int height = MyBitmap.Height;
        ImageAttributes attributes = new ImageAttributes();
        ColorMatrix matrix = new ColorMatrix();
        //创建淡出颜色矩阵
        matrix.Matrix00 = (float)0.0;
        matrix.Matrix01 = (float)0.0;
        matrix.Matrix02 = (float)0.0;
        matrix.Matrix03 = (float)0.0;
        matrix.Matrix04 = (float)0.0;
        matrix.Matrix10 = (float)0.0;
        matrix.Matrix11 = (float)0.0;
        matrix.Matrix12 = (float)0.0;
        matrix.Matrix13 = (float)0.0;
        matrix.Matrix14 = (float)0.0;
        matrix.Matrix20 = (float)0.0;
        matrix.Matrix21 = (float)0.0;
        matrix.Matrix22 = (float)0.0;
        matrix.Matrix23 = (float)0.0;
        matrix.Matrix24 = (float)0.0;
        matrix.Matrix30 = (float)0.0;
        matrix.Matrix31 = (float)0.0;
        matrix.Matrix32 = (float)0.0;
        matrix.Matrix33 = (float)0.0;
        matrix.Matrix34 = (float)0.0;
        matrix.Matrix40 = (float)0.0;
        matrix.Matrix41 = (float)0.0;
        matrix.Matrix42 = (float)0.0;
        matrix.Matrix43 = (float)0.0;
        matrix.Matrix44 = (float)0.0;
        matrix.Matrix33 = (float)1.0;
        matrix.Matrix44 = (float)1.0;
        //从1到0进行修改色彩变换矩阵主对角线上的数值
        //依次减少每种色彩分量
        Single count = (float)1.0;
        while (count > 0.0)
        {
            matrix.Matrix00 = (float)count;
            matrix.Matrix11 = (float)count;
            matrix.Matrix22 = (float)count;
            matrix.Matrix33 = (float)count;
            attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
            g.DrawImage(MyBitmap, new Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel, attributes);
            System.Threading.Thread.Sleep(20);
            count = (float)(count - 0.01);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "信息提示");
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值