WINFORM图片各种切换特效

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Text;

usingSystem.Drawing.Text;

usingSystem.Drawing.Drawing2D;

usingSystem.Drawing.Imaging;

usingSystem.Windows.Forms;

namespaceMengYu.Image

{

  publicclassImageClass

  {

    /// <summary>

    /// 将图片转换成黑白色效果

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidHeiBaiSeImage(Bitmap bmp, PictureBoxpicBox)

    {

      //以黑白效果显示图像

      Bitmap oldBitmap;

      Bitmap newBitmap=null;

      try

      {

        intHeight = bmp.Height;

        intWidth = bmp.Width;

        newBitmap= newBitmap(Width,Height);

        oldBitmap= bmp;

        Colorpixel;

        for(intx = 0; x < Width; x++)

          for(inty = 0; y < Height; y++)

          {

            pixel= oldBitmap.GetPixel(x, y);

            intr, g, b, Result = 0;

            r= pixel.R;

            g= pixel.G;

            b= pixel.B;

            //实例程序以加权平均值法产生黑白图像

            intiType = 2;

            switch(iType)

            {

              case0://平均值法

                Result= ((r + g + b) / 3);

                break;

              case1://最大值法

                Result= r > g ? r : g;

                Result= Result > b ? Result : b;

                break;

              case2://加权平均值法

                Result= ((int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b));

                break;

            }

            newBitmap.SetPixel(x,y, Color.FromArgb(Result, Result, Result));

          }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

      picBox.Image =newBitmap;

    }

    /// <summary>

    /// 雾化效果

    /// </summary>

    /// <paramname="bmp"></param>

    /// <paramname="picBox"></param>

    publicstaticvoidWuHuaImage(Bitmap bmp, PictureBoxpicBox)

    {

      //雾化效果

      Bitmap oldBitmap;

      Bitmap newBitmap = null;

      try

      {

        intHeight = bmp.Height;

        intWidth = bmp.Width;

        newBitmap= newBitmap(Width,Height);

        oldBitmap= bmp;

        Colorpixel;

        for(intx = 1; x < Width - 1; x++)

          for(inty = 1; y < Height - 1; y++)

          {

            System.RandomMyRandom = newRandom();

            intk = MyRandom.Next(123456);

            //像素块大小

            intdx = x + k % 19;

            intdy = y + k % 19;

            if(dx >= Width)

              dx= Width - 1;

            if(dy >= Height)

              dy= Height - 1;

            pixel= oldBitmap.GetPixel(dx, dy);

            newBitmap.SetPixel(x,y, pixel);

          }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

      picBox.Image= newBitmap;

    }

 

    /// <summary>

    /// 锐化效果

    /// </summary>

    /// <paramname="bmp"></param>

    /// <paramname="picBox"></param>

    publicstaticvoidRuiHuaImage(Bitmap bmp, PictureBoxpicBox)

    {

      Bitmap oldBitmap;

      Bitmap newBitmap = null;

      try

      {

        intHeight = bmp.Height;

        intWidth = bmp.Width;

        newBitmap= newBitmap(Width,Height);

        oldBitmap= bmp;

        Colorpixel;

        //拉普拉斯模板

        int[]Laplacian ={ -1, -1, -1, -1, 9, -1, -1, -1, -1 };

        for(intx = 1; x < Width - 1; x++)

          for(inty = 1; y < Height - 1; y++)

          {

            intr = 0, g = 0, b = 0;

            intIndex = 0;

            for(intcol = -1; col <= 1; col++)

              for(introw = -1; row <= 1; row++)

              {

                pixel= oldBitmap.GetPixel(x + row, y + col); r += pixel.R * Laplacian[Index];

                g+= pixel.G * Laplacian[Index];

                b+= pixel.B * Laplacian[Index];

                Index++;

              }

            //处理颜色值溢出

            r= r > 255 ? 255 : r;

            r= r < 0 ? 0 : r;

            g= g > 255 ? 255 : g;

            g= g < 0 ? 0 : g;

            b= b > 255 ? 255 : b;

            b= b < 0 ? 0 : b;

            newBitmap.SetPixel(x- 1, y - 1, Color.FromArgb(r, g, b));

          }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

      picBox.Image =newBitmap;

    }

    /// <summary>

    ///底片效果

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidDiPianImage(Bitmap bmp, PictureBoxpicBox)

    {

      Bitmap oldBitmap;

      Bitmap newBitmap = null;

      try

      {

        intHeight = bmp.Height;

        intWidth = bmp.Width;

        newBitmap= newBitmap(Width,Height);

        oldBitmap= bmp;

        Colorpixel;

        for(intx = 1; x < Width; x++)

        {

          for(inty = 1; y < Height; y++)

          {

            intr, g, b;

            pixel= oldBitmap.GetPixel(x, y);

            r= 255 - pixel.R;

            g= 255 - pixel.G;

            b= 255 - pixel.B;

            newBitmap.SetPixel(x,y, Color.FromArgb(r, g, b));

          }

        }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

      }

      picBox.Image =newBitmap;

    }

 

    /// <summary>

    ///浮雕效果

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidFuDiaoImage(Bitmap bmp, PictureBoxpicBox)

    {

      Bitmap oldBitmap;

      Bitmap newBitmap = null;

      try

      {

        intHeight = bmp.Height;

        intWidth = bmp.Width;

        newBitmap= newBitmap(Width,Height);

        oldBitmap= bmp;

        Colorpixel1, pixel2;

        for(intx = 0; x < Width - 1; x++)

        {

          for(inty = 0; y < Height - 1; y++)

          {

            intr = 0, g = 0, b = 0;

            pixel1= oldBitmap.GetPixel(x, y);

            pixel2= oldBitmap.GetPixel(x + 1, y + 1);

            r= Math.Abs(pixel1.R - pixel2.R + 128);

            g= Math.Abs(pixel1.G - pixel2.G + 128);

            b= Math.Abs(pixel1.B - pixel2.B + 128);

            if(r > 255)

              r= 255;

            if(r < 0)

              r= 0;

            if(g > 255)

              g= 255;

            if(g < 0)

              g= 0;

            if(b > 255)

              b= 255;

            if(b < 0)

              b= 0;

            newBitmap.SetPixel(x,y, Color.FromArgb(r, g, b));

          }

        }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

      }

      picBox.Image =newBitmap;

    }

 

    /// <summary>

    /// 日光照射效果

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidRiGuangZhaoSheImage(Bitmapbmp,PictureBox picBox)

    {

      //以光照效果显示图像

      Graphics MyGraphics =picBox.CreateGraphics();

      MyGraphics.Clear(Color.White);

      Bitmap MyBmp = newBitmap(bmp, bmp.Width, bmp.Height);

      intMyWidth = MyBmp.Width;

      intMyHeight = MyBmp.Height;

      Bitmap MyImage =MyBmp.Clone(newRectangleF(0, 0,MyWidth, MyHeight), System.Drawing.Imaging.PixelFormat.DontCare);

      intA = MyWidth / 2;

      intB = MyHeight / 2;

      //MyCenter图片中心点,发亮此值会让强光中心发生偏移

      Point MyCenter = newPoint(MyWidth / 2, MyHeight / 2);

      //R强光照射面的半径,即”光晕”

      intR = Math.Min(MyWidth / 2, MyHeight / 2);

      for(inti = MyWidth - 1; i >= 1; i--)

      {

        for(intj = MyHeight - 1; j >= 1; j--)

        {

          floatMyLength = (float)Math.Sqrt(Math.Pow((i- MyCenter.X), 2) + Math.Pow((j - MyCenter.Y), 2));

          //如果像素位于”光晕”之内

          if(MyLength < R)

          {

            ColorMyColor = MyImage.GetPixel(i, j);

            intr, g, b;

            //220亮度增加常量,该值越大,光亮度越强

            floatMyPixel = 220.0f * (1.0f - MyLength /R);

            r= MyColor.R + (int)MyPixel;

            r= Math.Max(0, Math.Min(r, 255));

            g= MyColor.G + (int)MyPixel;

            g= Math.Max(0, Math.Min(g, 255));

            b= MyColor.B + (int)MyPixel;

            b= Math.Max(0, Math.Min(b, 255));

            //将增亮后的像素值回写到位图

            ColorMyNewColor = Color.FromArgb(255, r, g, b);

            MyImage.SetPixel(i,j, MyNewColor);

          }

        }

        //重新绘制图片

        MyGraphics.DrawImage(MyImage,newRectangle(0, 0,MyWidth, MyHeight));

      }

    }

 

    /// <summary>

    /// 油画效果

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidYouHuaImage(Bitmap bmp, PictureBoxpicBox)

    {

      //以油画效果显示图像

      Graphics g =picBox.CreateGraphics();

      intwidth = bmp.Width;

      intheight = bmp.Height;

      RectangleF rect = newRectangleF(0, 0, width, height);

      Bitmap MyBitmap =bmp;

      Bitmap img =MyBitmap.Clone(rect, System.Drawing.Imaging.PixelFormat.DontCare);

      //产生随机数序列

      Random rnd = newRandom();

      //取不同的值决定油画效果的不同程度

      intiModel = 2;

      inti = width - iModel;

      while(i > 1)

      {

        intj = height - iModel;

        while(j > 1)

        {

          intiPos = rnd.Next(100000) % iModel;

          //将该点的RGB值设置成附近iModel点之内的任一点

          Colorcolor = img.GetPixel(i + iPos, j + iPos);

          img.SetPixel(i,j, color);

          j= j - 1;

        }

        i = i -1;

      }

      //重新绘制图像

      g.Clear(Color.White);

      g.DrawImage(img, newRectangle(0, 0, width, height));

    }

 

    /// <summary>

    /// 垂直百叶窗

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidBaiYeChuang1(Bitmap bmp, PictureBoxpicBox)

    {

      //垂直百叶窗显示图像

      try

      {

        BitmapMyBitmap =(Bitmap) bmp.Clone();

        intdw = MyBitmap.Width / 30;

        intdh = MyBitmap.Height;

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);

        Point[]MyPoint = newPoint[30];

        for(intx = 0; x < 30; x++)

        {

          MyPoint[x].Y= 0;

          MyPoint[x].X= x * dw;

        }

        Bitmapbitmap = newBitmap(MyBitmap.Width,MyBitmap.Height);

        for(inti = 0; i < dw; i++)

        {

          for(intj = 0; j < 30; j++)

          {

            for(intk = 0; k < dh; k++)

            {

              bitmap.SetPixel(MyPoint[j].X+ i, MyPoint[j].Y + k, MyBitmap.GetPixel(MyPoint[j].X + i, MyPoint[j].Y + k));

            }

          }

          picBox.Refresh();

          picBox.Image= bitmap;

          System.Threading.Thread.Sleep(120);

        }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

    }

 

    /// <summary>

    /// 水平百叶窗

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidBaiYeChuang2(Bitmap bmp, PictureBoxpicBox)

    {

      //水平百叶窗显示图像

      try

      {

        BitmapMyBitmap = (Bitmap)bmp.Clone();

        intdh = MyBitmap.Height / 20;

        intdw = MyBitmap.Width;

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);

        Point[]MyPoint = newPoint[20];

        for(inty = 0; y < 20; y++)

        {

          MyPoint[y].X= 0;

          MyPoint[y].Y= y * dh;

        }

        Bitmapbitmap = newBitmap(MyBitmap.Width,MyBitmap.Height);

        for(inti = 0; i < dh; i++)

        {

          for(intj = 0; j < 20; j++)

          {

            for(intk = 0; k < dw; k++)

            {

              bitmap.SetPixel(MyPoint[j].X+ k, MyPoint[j].Y + i, MyBitmap.GetPixel(MyPoint[j].X + k, MyPoint[j].Y + i));

            }

          }

          picBox.Refresh();

          picBox.Image= bitmap;

          System.Threading.Thread.Sleep(100);

        }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

    }

    /// <summary>

    /// 左右拉伸效果

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidLaShen_ZuoDaoYou(Bitmap bmp, PictureBoxpicBox)

    {

      //以从左向右拉伸方式显示图像

      try

      {

        intwidth = bmp.Width; //图像宽度

        intheight = bmp.Height; //图像高度

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);//初始为全灰色

        for(intx = 1; x <= width; x++)

        {

          Bitmapbitmap = bmp.Clone(newRectangle(0,0, x, height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);

          g.DrawImage(bitmap,0, 0);

          System.Threading.Thread.Sleep(10);

        }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

    }

 

    /// <summary>

    /// 淡入效果

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidDanRu(Bitmap bmp, PictureBox picBox)

    {

      //淡入显示图像

      try

      {

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);

        intwidth = bmp.Width;

        intheight = bmp.Height;

        ImageAttributesattributes = newImageAttributes();

        ColorMatrixmatrix = newColorMatrix();

        //创建淡入颜色矩阵

        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进行修改色彩变换矩阵主对角线上的数值

        //使三种基准色的饱和度渐增

        Singlecount = (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(bmp,newRectangle(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,"信息提示");

      }

    }

    /// <summary>

    /// 逆时针旋转

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidXuanZhuan90(Bitmap bmp, PictureBoxpicBox)

    {

      try

      {

        Graphicsg = picBox.CreateGraphics();

        bmp.RotateFlip(RotateFlipType.Rotate90FlipXY);

        g.Clear(Color.White);

        g.DrawImage(bmp,0, 0);

      }

      catch(Exception e)

      {

        MessageBox.Show(e.ToString());

      }

    }

    /// <summary>

    /// 顺时针旋转

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidXuanZhuan270(Bitmap bmp, PictureBoxpicBox)

    {

      try

      {

        Graphicsg = picBox.CreateGraphics();

        bmp.RotateFlip(RotateFlipType.Rotate270FlipXY);

        g.Clear(Color.White);

        g.DrawImage(bmp,0, 0);

      }

      catch(Exception e)

      {

        MessageBox.Show(e.ToString());

      }

    }

    /// <summary>

    /// 分块显示

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidFenKuai(Bitmap MyBitmap, PictureBoxpicBox)

    {

      //以分块效果显示图像

      Graphics g =picBox.CreateGraphics();

      g.Clear(Color.White);

      intwidth = MyBitmap.Width;

      intheight = MyBitmap.Height;

      //定义将图片切分成四个部分的区域

      RectangleF[] block ={

          newRectangleF(0,0,width/2,height/2),

          newRectangleF(width/2,0,width/2,height/2),

          newRectangleF(0,height/2,width/2,height/2),

          newRectangleF(width/2,height/2,width/2,height/2)};

      //分别克隆图片的四个部分

      Bitmap[]MyBitmapBlack ={

        MyBitmap.Clone(block[0],System.Drawing.Imaging.PixelFormat.DontCare),

        MyBitmap.Clone(block[1],System.Drawing.Imaging.PixelFormat.DontCare),

        MyBitmap.Clone(block[2],System.Drawing.Imaging.PixelFormat.DontCare),

        MyBitmap.Clone(block[3],System.Drawing.Imaging.PixelFormat.DontCare)};

      //绘制图片的四个部分,各部分绘制时间间隔为0.5

      g.DrawImage(MyBitmapBlack[0],0, 0);

      System.Threading.Thread.Sleep(500);

      g.DrawImage(MyBitmapBlack[1],width / 2, 0);

      System.Threading.Thread.Sleep(500);

      g.DrawImage(MyBitmapBlack[3],width / 2, height / 2);

      System.Threading.Thread.Sleep(500);

      g.DrawImage(MyBitmapBlack[2],0, height / 2);

    }

 

    /// <summary>

    /// 积木特效

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidJiMu(Bitmap MyBitmap, PictureBox picBox)

    {

      //以积木效果显示图像

      try

      {

        GraphicsmyGraphics = picBox.CreateGraphics ();

        intmyWidth, myHeight, i, j, iAvg, iPixel;

        ColormyColor, myNewColor;

        RectangleFmyRect;

        myWidth =MyBitmap.Width;

        myHeight= MyBitmap.Height;

        myRect = newRectangleF(0, 0, myWidth, myHeight);

        Bitmapbitmap = MyBitmap.Clone(myRect, System.Drawing.Imaging.PixelFormat.DontCare);

        i = 0;

        while(i < myWidth - 1)

        {

          j= 0;

          while(j < myHeight - 1)

          {

            myColor= bitmap.GetPixel(i, j);

            iAvg= (myColor.R + myColor.G + myColor.B) / 3;

            iPixel= 0;

            if(iAvg >= 128)

              iPixel= 255;

            else

              iPixel= 0;

            myNewColor= Color.FromArgb(255, iPixel, iPixel, iPixel);

            bitmap.SetPixel(i,j, myNewColor);

            j= j + 1;

          }

          i= i + 1;

        }

        myGraphics.Clear(Color.WhiteSmoke);

        myGraphics.DrawImage(bitmap,newRectangle(0, 0,myWidth, myHeight));

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

    }

 

    /// <summary>

    /// 马赛克效果

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidMaSaiKe(Bitmap MyBitmap,PictureBoxpicBox)

    {

       //以马赛克效果显示图像

      try

      {

        intdw = MyBitmap.Width / 50;

        intdh = MyBitmap.Height / 50;

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);

        Point[] MyPoint= newPoint[2500];

        for(intx = 0; x < 50; x++)

          for(inty = 0; y < 50; y++)

          {

            MyPoint[x* 50 + y].X = x * dw;

            MyPoint[x* 50 + y].Y = y * dh;

          }

        Bitmapbitmap = newBitmap(MyBitmap.Width,MyBitmap.Height);

        for(inti = 0; i < 10000; i++)

        {

          System.RandomMyRandom = newRandom();

          intiPos = MyRandom.Next(2500);

          for(intm = 0; m < dw; m++)

            for(intn = 0; n < dh; n++)

            {

              bitmap.SetPixel(MyPoint[iPos].X+ m, MyPoint[iPos].Y + n, MyBitmap.GetPixel(MyPoint[iPos].X + m,MyPoint[iPos].Y + n));

            }

          picBox.Refresh();

          picBox.Image= bitmap;

        }

        for(inti = 0; i < 2500; i++)

          for(intm = 0; m < dw; m++)

            for(intn = 0; n < dh; n++)

            {

              bitmap.SetPixel(MyPoint[i].X+ m, MyPoint[i].Y + n, MyBitmap.GetPixel(MyPoint[i].X + m, MyPoint[i].Y + n));

            }

        picBox.Refresh();

        picBox.Image= bitmap;

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

    }

 

    /// <summary>

    /// 自动旋转

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidXuanZhuan(Bitmap MyBitmap, PictureBoxpicBox)

    {

      Graphics g =picBox.CreateGraphics();

      floatMyAngle = 0;//旋转的角度

      while(MyAngle < 360)

      {

        TextureBrushMyBrush = newTextureBrush(MyBitmap);

        picBox.Refresh();

        MyBrush.RotateTransform(MyAngle);

        g.FillRectangle(MyBrush,0, 0, MyBitmap.Width,MyBitmap.Height);

        MyAngle+= 0.5f;

        System.Threading.Thread.Sleep(50);

      }

    }

    /// <summary>

    /// 上下对接

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidDuiJie_ShangXia(Bitmap MyBitmap,PictureBox picBox)

    {

      //以上下对接方式显示图像

      try

      {

        intwidth = MyBitmap.Width; //图像宽度

        intheight = MyBitmap.Height; //图像高度

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);//初始为全灰色

        Bitmapbitmap = newBitmap(width,height);

        intx = 0;

        while(x <= height / 2)

        {

          for(inti = 0; i <= width - 1; i++)

          {

            bitmap.SetPixel(i,x, MyBitmap.GetPixel(i, x));

          }

          for(inti = 0; i <= width - 1; i++)

          {

            bitmap.SetPixel(i,height - x - 1, MyBitmap.GetPixel(i, height - x - 1));

          }

          x++;

          g.Clear(Color.Gray);

          g.DrawImage(bitmap,0, 0);

          System.Threading.Thread.Sleep(10);

        }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

    }

 

    /// <summary>

    /// 上下翻转

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidFanZhuan_ShangXia(Bitmap MyBitmap,PictureBox picBox)

    {

      //以上下反转方式显示图像

      try

      {

        intwidth = MyBitmap.Width; //图像宽度

        intheight = MyBitmap.Height; //图像高度

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);//初始为全灰色

        for(inti = -width / 2; i <= width / 2; i++)

        {

          g.Clear(Color.Gray);//初始为全灰色

          intj = Convert.ToInt32(i *(Convert.ToSingle(height) / Convert.ToSingle(width)));

          RectangleDestRect = newRectangle(0, height/ 2 - j, width, 2 * j);

          RectangleSrcRect = newRectangle(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,"信息提示");

      }

    }

 

    /// <summary>

    /// 左右对接

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidDuiJie_ZuoYou(Bitmap MyBitmap,PictureBox picBox)

    {

      //以左右对接方式显示图像

      try

      {

        intwidth = MyBitmap.Width; //图像宽度

        intheight = MyBitmap.Height; //图像高度

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);//初始为全灰色

        Bitmapbitmap = newBitmap(width,height);

        intx = 0;

        while(x <= width / 2)

        {

          for(inti = 0; i <= height - 1; i++)

          {

            bitmap.SetPixel(x,i, MyBitmap.GetPixel(x, i));

          }

          for(inti = 0; i <= height - 1; i++)

          {

            bitmap.SetPixel(width- x - 1, i,

            MyBitmap.GetPixel(width- x - 1, i));

          }

          x++;

          g.Clear(Color.Gray);

          g.DrawImage(bitmap,0, 0);

          System.Threading.Thread.Sleep(10);

        }

      }

      catch(Exception ex)

      {

        MessageBox.Show(ex.Message,"信息提示");

      }

    }

    /// <summary>

    /// 左右翻转

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidFanZhuan_ZuoYou(Bitmap MyBitmap,PictureBox picBox)

    {

      //以左右反转方式显示图像

      try

      {

        intwidth = MyBitmap.Width; //图像宽度

        intheight = MyBitmap.Height; //图像高度

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);//初始为全灰色

        for(intj = -height / 2; j <= height / 2; j++)

        {

          g.Clear(Color.Gray);//初始为全灰色

          inti = Convert.ToInt32(j *(Convert.ToSingle(width) / Convert.ToSingle(height)));

          RectangleDestRect = newRectangle(width / 2- i, 0, 2 * i, height);

          RectangleSrcRect = newRectangle(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,"信息提示");

      }

    }

 

    /// <summary>

    /// 四周扩散

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidKuoSan(Bitmap MyBitmap, PictureBoxpicBox)

    {

      try

      {

        intwidth = MyBitmap.Width; //图像宽度

        intheight = MyBitmap.Height; //图像高度

        Graphicsg = picBox.CreateGraphics();

        g.Clear(Color.Gray);//初始为全灰色

        for(inti = 0; i <= width / 2; i++)

        {

          intj = Convert.ToInt32(i *(Convert.ToSingle(height) / Convert.ToSingle(width)));

          RectangleDestRect = newRectangle(width / 2- i, height / 2 - j, 2 * i, 2 * j);

          RectangleSrcRect = newRectangle(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,"信息提示");

      }

    }

    /// <summary>

    /// 上下拉伸

    /// </summary>

    /// <paramname="bmp">Bitmap 对象</param>

    /// <paramname="picBox">PictureBox 对象</param>

    publicstaticvoidLaShen_ShangDaoXiao(BitmapMyBitmap,PictureBox picBox)

    {

            //以从上向下拉伸方式显示图像

      try

      {

        intwidth = MyBitmap.Width; //图像宽度

        intheight =MyBitmap.Height; //图像高度

        Graphicsg =picBox.CreateGraphics();

        g.Clear(Color.Gray);//初始为全灰色

        for(inty = 1; y <= height; y++)

        {

          Bitmapbitmap=MyBitmap.Clone (newRectangle(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,"信息提示");

      }

    }

  }

}

猜你喜欢

转载自blog.csdn.net/yangyikun0428/article/details/80074575