程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 超酷的圖像效果 (附demo; C#完成)(9)

超酷的圖像效果 (附demo; C#完成)(9)

編輯:關於C語言

九.馬賽克效果

原理: 確定圖像的隨機位置點和確定馬賽克塊的大小,然後馬賽克塊圖像覆蓋隨機點即可.

效果圖:

實現代碼:

馬賽克效果
    private void button1_Click(object sender, EventArgs e)
    {
      //以馬賽克效果顯示圖像
      try
      {
        int dw = MyBitmap.Width / 50;
        int dh = MyBitmap.Height / 50;
        Graphics g = this.pictureBox1.CreateGraphics();
        g.Clear(Color.Gray);
        Point[] MyPoint = new Point[2500];
        for (int x = 0; x < 50; x++)
          for (int y = 0; y < 50; y++)
          {
            MyPoint[x * 50 + y].X = x * dw;
            MyPoint[x * 50 + y].Y = y * dh;
          }
        Bitmap bitmap = new Bitmap(MyBitmap.Width, MyBitmap.Height);
        for (int i = 0; i < 10000; i++)
        {
          System.Random MyRandom = new Random();
          int iPos = MyRandom.Next(2500);
          for (int m = 0; m < dw; m++)
            for (int n = 0; n < dh; n++)
            {
              bitmap.SetPixel(MyPoint[iPos].X + m, MyPoint[iPos].Y + n, MyBitmap.GetPixel(MyPoint[iPos].X + m, MyPoint[iPos].Y + n));
            }
          this.pictureBox1.Refresh();
          this.pictureBox1.Image = bitmap;
        }
        for (int i = 0; i < 2500; i++)
          for (int m = 0; m < dw; m++)
            for (int n = 0; n < dh; n++)
            {
              bitmap.SetPixel(MyPoint[i].X + m, MyPoint[i].Y + n, MyBitmap.GetPixel(MyPoint[i].X + m, MyPoint[i].Y + n));
            }
        this.pictureBox1.Refresh();
        this.pictureBox1.Image = bitmap;
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message, "信息提示");
      }
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved