c# 数字图像处理 特效显示

图像的特效显示就是利用人眼的视觉特性, 通过对图像分块, 然后以不同的次序显示出来。实现图像的特效显示的基本思路是将图像分成不同的小块, 按一定的方向或次序、分阶 段地显示或擦除图像块。其中的 4 个要点是:
(1 ) 如何划分图像块;
(2 ) 确定图像块的操作次序;
(3 ) 显示或清除图像块;
(4 ) 在两个图像块的操作之间延时

向下扫描

	int h = curBitmap.Height;
	int w = curBitmap.Width;
	Bitmap bitmap = new Bitmap(curBitmap.Width, curBitmap.Height);
	for (int i = 0; i < h; i++)
	{
	    for (int k = 0; k < w; k++)
	    {
	        bitmap.SetPixel(k, i, curBitmap.GetPixel(k, i));
	    }
	
	    this.pb2.Refresh();
	    this.pb2.Image = bitmap;
	    Thread.Sleep(5);
	}

在这里插入图片描述

从左扫描

	int h = curBitmap.Height;
	int w = curBitmap.Width;
	Bitmap bitmap = new Bitmap(curBitmap.Width, curBitmap.Height);
	for (int i = 0; i < w; i++)
	{
	    for (int k = 0; k < h; k++)
	    {
	        bitmap.SetPixel(i, k, curBitmap.GetPixel(i, k));
	    }
	
	    this.pb2.Refresh();
	    this.pb2.Image = bitmap;
	    Thread.Sleep(5);
	}

在这里插入图片描述

垂直百叶窗

	int h = curBitmap.Height;
	int w = curBitmap.Width;
	int dh = h / 10;
	Bitmap bitmap = new Bitmap(curBitmap.Width, curBitmap.Height);
	Point[] myPoints = new Point[10];
	for (int i = 0; i < 10; i++)
	{
	    myPoints[i].X = 0;
	    myPoints[i].Y = i * dh;
	}
	for (int i = 0; i < dh; i++)
	{
	    for (int j = 0; j < 10; j++)
	    {
	        for (int k = 0; k < w; k++)
	        {
	            int x = myPoints[j].X + k;
	            int y = myPoints[j].Y + i;
	            Color cr = curBitmap.GetPixel(x ,y );
	            bitmap.SetPixel(x, y, cr);
	        }
	
	    }
	    this.pb2.Refresh();
	    this.pb2.Image = bitmap;
	    Thread.Sleep(5);
	}

在这里插入图片描述

马赛克

	Random ra=new Random();
	//for (int i = 0; i < 2; i++)
	//{
	for (int j = 0; j < ltileNum; j++)
	{
	    int n = ra.Next(0, ltileNum);
	    int x = myPoints[n].X ;
	    int y = myPoints[n].Y ;
	    for (int k = 0; k <num; k++)
	    {
	        for (int l = 0; l <num; l++)
	        {
	            if (x + k < w && y + l<h)
	            {
	                Color cr = curBitmap.GetPixel(x + k, y + l);
	                bitmap.SetPixel(x + k, y + l, cr);
	            }
	          
	        }
	    }
	   
	//}
	}
	this.pb2.Refresh();
	this.pb2.Image = bitmap;
	Thread.Sleep(1);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值