c#图片自动播放程序

1 篇文章 0 订阅
filp_v2系统,是练习c#控件的很好Demo案例。它包含了菜单、多窗口、图片框、复选框、容器等控件。
功能如下:
1:通过定时器完成自动翻转
2:设置毫秒值保存到xml数据中
3:文件夹对话框
4:文件对话框
5:自定义输入文件或目录

6:多个form之间数据共享


由于代码比较多,下面贴出核心代码

|---获取所有可执行文件、初始化xml保存数据。

using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Xml;

namespace flip_v2
{
	/** 图片+Xml工具类*/	
	public class ImgTool
	{	
		/**
		 *
		 * 	传递一个完整路径,返回一个ilst集合,0为路径(不含文件名)	1:播放的文件名(不包含路径)
		 * 	如C:\Users\Public\Pictures\Sample Pictures\八仙花.jpg
		 * 		0:C:\Users\Public\Pictures\Sample Pictures
		 * 		1:八仙花.jpg
		 */
		public static string[] pathToList(string path){
			string[] array = new string[2];
			int last = path.LastIndexOf("\\");
			if(last!=-1){
				array[0]=(path.Substring(0,last));
				array[1]=(path.Substring(last+1));
			}
			
			return array;
		}
		
		/**把所有文件封装到map中  key为uint64  value=string*/
		public static Dictionary<UInt64,string> pathToMap(string path){
			Dictionary<UInt64,string> dict = new Dictionary<UInt64,string>();
			
			DirectoryInfo info = new DirectoryInfo(path);
			FileSystemInfo[] fileSystem = info.GetFileSystemInfos();
			
			UInt64 count = 1;
			//获取所有子文件(不包含子文件夹),
			foreach(FileSystemInfo f in fileSystem){
				FileInfo file = f as FileInfo;
				if(file!=null && fileterEndName(file.Name))
					dict.Add(count++,f.FullName);
			}
			
			return dict;
		}
		//文件过滤器:png,jpg,gif
		public static bool fileterEndName(string endName){
			endName = endName.ToLower();
			bool b = false;
			string tag = ".png|.jpg|.gif";
			int last = endName.LastIndexOf(".");
			if(last!=-1){
				endName = endName.Substring(last);
				if(tag.Contains(endName))
					b= true;
			}
			return b;
		}
		
		/**操作xml:默认保存到c:\\property.xml*/
		public static void createXml(string path){
			//xml样式 
			XmlWriterSettings settings = new XmlWriterSettings();
			settings.Indent = true;
			settings.NewLineOnAttributes = false;
			
			//本地创建一个新的xml
			XmlWriter write = XmlWriter.Create(path,settings);
			
			write.WriteStartDocument();
			write.WriteStartElement("property");
			
			write.WriteStartElement("time");
			write.WriteAttributeString("id","setTime");
			write.WriteValue("3000");
			write.WriteEndElement();
			
			write.WriteStartElement("localhostPath");
			write.WriteAttributeString("id","setInputBoxPath");
			write.WriteValue("");
			write.WriteEndElement();
			
			write.WriteEndElement();
			write.WriteEndDocument();
			
			//刷新缓冲区,并释放资源
			write.Flush();
			write.Close();
		}
	}
}
|----目录图片的核心代码

<pre code_snippet_id="237877" snippet_file_name="blog_20140315_2_3804652" name="code" class="csharp">		/*执行的事件*/
        public void theout(object source, EventArgs  e)
        {
        	Boolean b = checkTag.Checked;
			if(!b){
            	myTimer.Stop(); //停止定时器
        	}else{
	        	//执行获取图片
	        	string pageStr = showImg.Text;
				UInt64 pageNum  = UInt64.Parse(pageStr);
				pageNum = pageNum+1;
				
				try{
					showPage(pageNum);
				}catch(Exception){
					//循环
					showPage(1);
					//MessageBox.Show("已是未尾");
				}
			}
        }
		
		/**后退*/
		void BackOffClick(object sender, EventArgs e)
		{
			string pageStr = showImg.Text;
			UInt64 pageNum  = UInt64.Parse(pageStr);
			pageNum = pageNum-1;
			try{
				showPage(pageNum);
			}catch(Exception){
				MessageBox.Show("已是顶页");
			}
			
		}
		
		/**前进*/
		void ForwardClick(object sender, EventArgs e)
		{
			string pageStr = showImg.Text;
			UInt64 pageNum  = UInt64.Parse(pageStr);
			pageNum = pageNum+1;
			try{
				showPage(pageNum);
			}catch(Exception){
				MessageBox.Show("已是未尾");
			}
		}
		
		public bool showPage(UInt64 pageNum)
		{
			if(dict==null || dict.Count==0){
				MessageBox.Show("抱歉,没有找到可执行文件!");
				stopImg.ForeColor=Color.Red;
				startImg.ForeColor=Color.LimeGreen;
				
				/*还原*/
				Reduction();
				
				return false;
			}
			string showImgPath =  dict[pageNum];
			showImg.Image = Image.FromFile(showImgPath);
					
			//回显信息
			string[] str = ImgTool.pathToList(showImgPath);
			Many.Text = "来自:"+str[0];
			Single.Text = "正在浏览【"+str[1]+"】";
			
			//回显页码
			showImg.Text = Convert.ToString(pageNum);
			return true;
		}
</pre>

下面贴出程序执行图片

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Halcon是现代化的图像处理软件,其强大的图像识别和分析功能使其成为工业视觉领域的佼佼者。而C语言作为一种通用的编程语言,在计算机科学和软件开发中广泛应用。 Halcon可以与C语言联合使用,从而实现更加复杂和高效的图像处理和分析任务。这种联合使用的方式可以发挥Halcon图像处理功能的优势,同时结合C语言的灵活性和高性能,实现更复杂的算法和应用。 Halcon提供了与C语言进行交互的接口,可以通过这些接口将Halcon的功能嵌入到C语言的程序中。通过这种方式,可以利用C语言编写的程序来调用Halcon的各种图像处理函数和算法,进而完成更加复杂的图像处理任务。 在Halcon联合C语言的应用中,C语言可以用于处理Halcon所不能直接处理的一些任务,如文件的读写、用户界面的设计等。同时,C语言还可以用来进行一些高性能的计算和算法优化,从而提升整个系统的运行效率。 总而言之,Halcon联合C语言的应用能够充分发挥各自的优势,实现更加复杂和高效的图像处理和分析任务。这种联合使用方式既能够利用Halcon强大的图像处理功能,又能够充分发挥C语言的灵活性和高性能,为工业视觉领域的开发者提供了更多的选择和发展空间。 ### 回答2: Halcon是一种先进的机器视觉开发库,而C语言是一种广泛应用于程序开发的编程语言。Halcon联合C的意思是利用C语言与Halcon进行联合开发,以实现更强大的机器视觉应用。 首先,Halcon提供了丰富的机器视觉算法和函数库,可用于图像处理、特征提取、目标识别等任务。而C语言作为通用的编程语言,可以方便地与其他硬件和软件进行集成,如嵌入式系统、图形界面等。因此,将Halcon与C语言进行联合开发,可以获得更高的灵活性和兼容性。 在Halcon联合C的开发过程中,可以使用C语言进行控制和管理,包括图像采集、处理流程控制、算法调用等等。同时,也可以利用C语言的图像显示和用户界面编程来实现友好的操作界面。而Halcon则提供了强大的图像处理算法和函数库,可以轻松实现图像的处理、分析和目标识别等功能。 通过Halcon与C语言的联合开发,我们可以充分发挥两者的优势,实现更加灵活和高效的机器视觉应用。无论是大规模的工业自动化系统,还是小型的嵌入式应用,都可以通过这种方式来实现。而且,由于C语言具有广泛的应用领域,通过与Halcon的联合开发,我们还可以更方便地将机器视觉技术应用于其他领域,如医疗、交通监控、智能家居等等。 综上所述,Halcon联合C的开发模式可以帮助开发者充分发挥机器视觉和编程语言的优势,实现更加灵活和高效的应用。无论是在工业领域还是其他领域,这种联合开发模式都具有广阔的应用前景。 ### 回答3: Halcon与C语言的联合主要体现在Halcon软件开发库与C语言的集成应用上。Halcon是一种用于机器视觉领域的强大软件开发工具,而C语言是一种被广泛应用于软件开发的高级编程语言。将Halcon与C语言进行联合可以进一步拓展Halcon的应用范围和功能。 在Halcon中,可以通过C语言接口调用Halcon函数,实现不同领域的图像处理和机器视觉应用。C语言作为一种通用的编程语言,通过与Halcon的联合,可以实现更丰富的功能和更灵活的应用场景。通过C语言编写的代码可以直接通过Halcon函数库进行图像处理,如图像读取、图像预处理、特征提取等,从而更好地满足用户的需求。 此外,Halcon还支持C语言模块的自定义开发,用户可以基于C语言的编程能力,自定义需要的图像处理算法和函数,并与Halcon进行联合使用。这样可以更灵活地应用Halcon的功能,满足特定领域的需求。 总而言之,Halcon与C语言的联合可以将Halcon的机器视觉功能与C语言的编程能力相结合,实现更灵活、高效的图像处理和机器视觉应用。这种联合不仅扩展了Halcon的应用领域,还提供了更多自定义开发的可能性,满足了不同用户的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值