《C#winform动态高频刷新显示图片实例_winform多图片刷新显示.docx》由会员分享,可在线阅读,更多相关《C#winform动态高频刷新显示图片实例_winform多图片刷新显示.docx(3页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、C#winform动态高频刷新显示图片实例有时候需要高频刷新图片,为了提高性能使用MemoryStream 类。MemoryStream 类介绍创建一个流,其后备存储为内存 。读写内存,属于底层内存读写,速度快!处理的单位是字节。MemoryStream类用于向内存而不是磁盘读写数据。MemoryStream封装以无符号字节数组 形式存储的数据,该数组在创建MemoryStream对象时被初始化,或者该数组可创建为空数组。可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要。实例如下:高速定时读取本地图片并在另外定时器中刷新到窗体控件PictureBox中。定时
2、器计时设置为1ms,编写了拷贝和不拷贝数据流转化为字节数组方法代码:1using System;2using System.Drawing;3using System.IO;4using System.Windows.Forms;56namespace bitmapApp78public partial class Form1 : Form910MemoryStream ms;/图像内存流11public Form1()1213InitializeComponent();1415/ 16/ 拷贝数据流转化为字节数组方法17/ 18public static class CopyStreamUt
3、il1920const int BufferSize = 8192;21public static void CopyTo(Stream input, Stream output)2223byte buffer = new byteBufferSize;2425int read;26while (read = input.Read(buffer, 0, buffer.Length) 0)2728output.Write(buffer, 0, read);293031public static byte ReadFully(Stream input)3233using (MemoryStream
4、 tempStream = new MemoryStream()3435CopyTo(input, tempStream);36return tempStream.ToArray();37383940/ 41/ 数据流转化为字节数组方法42/ 43public static class StreamUtil4445public static byte ReadFully(Stream fileStream)4647byte bytes = new bytefileStream.Length;48fileStream.Read(bytes, 0, bytes.Length);49return b
5、ytes;505152/启动定时器刷新显示53private void button1_Click(object sender, EventArgs e)5455timer1.Enabled = true;56timer2.Enabled = true;5758private void timer1_Tick(object sender, EventArgs e)5960Bitmap bmpt = new Bitmap(ms);3/36163pictureBox1.BackgroundImage = bmpt; 62ms.Close();/需要关闭64 int i = 0;65 private
6、 void timer2_Tick(object sender, EventArgs e)66 67 i+;68 if (i 5)69 70i = 1;7172 if (i = 1)73 74 string file = D:迪丽热巴写真迪丽热巴1.jpg;75 FileStream fs = new FileStream(file, FileMode.Open);76 /byte buffer = CopyStreamUtil.ReadFully(fs);77 byte buffer = StreamUtil.ReadFully(fs);78 ms = new MemoryStream(bu
7、ffer);79 fs.Close();8081else if (i = 2)8283string file = D:迪丽热巴写真迪丽热巴2.jpg;84FileStream fs = new FileStream(file, FileMode.Open);85/byte buffer = CopyStreamUtil.ReadFully(fs);86byte buffer = StreamUtil.ReadFully(fs);87ms = new MemoryStream(buffer);88fs.Close();8990else if (i = 3)9192string file = D:
8、迪丽热巴写真迪丽热巴3.jpg;93FileStream fs = new FileStream(file, FileMode.Open);94/byte buffer = CopyStreamUtil.ReadFully(fs);95byte buffer = StreamUtil.ReadFully(fs);96ms = new MemoryStream(buffer);97fs.Close();9899else if (i = 4)100101string file = D:迪丽热巴写真迪丽热巴4.jpg;102FileStream fs = new FileStream(file, F
9、ileMode.Open);103/byte buffer = CopyStreamUtil.ReadFully(fs);104byte buffer = StreamUtil.ReadFully(fs);105ms = new MemoryStream(buffer);106fs.Close();107108else if (i = 5)109110string file = D:迪丽热巴写真迪丽热巴5.jpg;111FileStream fs = new FileStream(file, FileMode.Open);112/byte buffer = CopyStreamUtil.ReadFully(fs);113byte buffer = StreamUtil.ReadFully(fs);114ms = new MemoryStream(buffer);115fs.Close();116117118119效果: