当前位置: 首页 > news >正文

关于C# 开发Winfrom事后总结

一:要求能读取文件夹中视频及图片并判断

 private void Form1_Load(object sender, EventArgs e){string foldPath = "路径";//获取该目录下的文件 string[] files = Directory.GetFiles(@foldPath + "\\", "*.*", System.IO.SearchOption.TopDirectoryOnly);var th = new Thread(delegate (){//遍历每个文件for (int i = 0; i < files.Length; i++){//判断当前组文件中第i个文件if (IsPicture(files[i]))  //图片{Bitmap picture = new Bitmap(files[i]);ChangeBringToFrontImage(picture);}if (IsVideo(files[i]))    //视频{ChangeBringToFrontVideo(files[i]);}if (i == files.Length - 1){//从0开始重新播放i = 0;}}});
//开辟新线程
//th.IsBackground = true;
//th.Start();}
//定义判断是否为图片
public bool IsPicture(string filePath)
{var extension = Path.GetExtension(filePath).ToLowerInvariant();return extension == ".jpg" ||extension == ".jpeg" ||extension == ".png" ||extension == ".gif" ||extension == ".bmp" ||extension == ".tiff" ||extension == ".ico";}//定义判断是否为视频
public bool IsVideo(string filePath)
{var extension = Path.GetExtension(filePath).ToLowerInvariant();return extension == ".wmv" ||extension == ".asf" ||extension == ".asx" ||extension == ".avi" ||extension == ".mp4" ||extension == ".mov" ||extension == ".mkv";
}

二:视频跟图片要等比例放大缩小

pictureBox1.Dock = DockStyle.Fill;
axWindowsMediaPlayer1.Dock = DockStyle.Fill;

三:更换窗体运行图标

// 移除窗体边框
this.FormBorderStyle = FormBorderStyle.None;// 允许用户调整窗体大小
this.SizeGripStyle = SizeGripStyle.Show;//设置窗体的最大大小和最小大小
this.MaximumSize = new Size(1920, 1080);
this.MinimumSize = new Size(400, 300);//设置窗体的开始位置(CenterScreen将窗体居中)
this.StartPosition = FormStartPosition.CenterScreen;// 设置窗体的举头文本
this.Text = "Trs宣传播报";// 设置窗体的背景色
//this.BackColor = Color.Lime;// 设置窗体50%的透明度
//this.Opacity = 0.5;//更改窗体图标
this.Icon = Resources.Trs;

四:要求可配置文件路径及更换时间

//config<appSettings><add key="Time" value="4000" /><!--循环的时间--><add key="FromPath" value="C:\Users\N01465\Desktop\1" /><!--播放路径--></appSettings>//From1_cs// 强制重新加载app.configConfigurationManager.RefreshSection("appSettings");// 读取所有设置Time     = ConfigurationManager.AppSettings["Time"];FromPath = ConfigurationManager.AppSettings["FromPath"];

五:运行渲染的过程中不运行卡顿

//如一 开启新线程不使用主线程去渲染
private void ChangeBringToFrontImage(Image img)
{if (pictureBox1.InvokeRequired){// 使用Invoke安全地从其他线程调用pictureBox1.Invoke(new Action(() =>{pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;axWindowsMediaPlayer1.Visible = false;pictureBox1.Visible = true;pictureBox1.Image = img;Delay(Convert.ToInt32(Time));}));}else{// 如果已经在创建控件的线程上,直接设置值pictureBox1.Visible = true;axWindowsMediaPlayer1.Visible = false;pictureBox1.Image = img;Thread.Sleep(Convert.ToInt32(Time));}
}private void ChangeBringToFrontVideo(string filePath)
{if (axWindowsMediaPlayer1.InvokeRequired){// 使用Invoke安全地从其他线程调用axWindowsMediaPlayer1.Invoke(new Action(() =>{axWindowsMediaPlayer1.Visible = true;pictureBox1.Visible = false;#region 解决报错的方式你可以先不加这个你试试会不会报错((System.ComponentModel.ISupportInitialize)(this.axWindowsMediaPlayer1)).BeginInit();//axWindowsMediaPlayer2为第三方控件名axWindowsMediaPlayer1.uiMode = "None"; //隐藏视频播放器布局状态栏this.Controls.Add(axWindowsMediaPlayer1);((System.ComponentModel.ISupportInitialize)(this.axWindowsMediaPlayer1)).EndInit();#endregionthis.axWindowsMediaPlayer1.URL = filePath;//1 的时候是关闭,结束了try{while (!((int)axWindowsMediaPlayer1.playState == 1)){Delay(500);}}catch{}}));}else{axWindowsMediaPlayer1.Visible = true;pictureBox1.Visible = false;#region 解决报错的方式你可以先不加这个你试试会不会报错((System.ComponentModel.ISupportInitialize)(this.axWindowsMediaPlayer1)).BeginInit();//axWindowsMediaPlayer2为第三方控件名axWindowsMediaPlayer1.uiMode = "None"; //隐藏视频播放器布局状态栏this.Controls.Add(axWindowsMediaPlayer1);((System.ComponentModel.ISupportInitialize)(this.axWindowsMediaPlayer1)).EndInit();#endregionthis.axWindowsMediaPlayer1.URL = filePath;//1 的时候是关闭,结束了while (!((int)axWindowsMediaPlayer1.playState == 1)){Delay(500);}}
}

六:隐藏标题栏后需要可拖拽缩放

可通过游标去实现我这边就不粘出来了

http://www.lryc.cn/news/397751.html

相关文章:

  • Python学习笔记35:进阶篇(二十四)pygame的使用之音频文件播放
  • Transformer-LSTM预测 | Matlab实现Transformer-LSTM多变量时间序列预测
  • 常见的点云数据的获取方式
  • java 中钻石操作符 <> 的使用场景
  • C++ 定时器触发
  • 【Docker 入门】
  • 现在有什么副业可以让人快速上岸?可以试试这个行业上岸其实不难
  • 每天一个数据分析题(四百二十)- 一元线性回归模型
  • day11:01文件处理
  • 一场夏测杀出个“双冠王”,极越01成为纯电SUV标杆
  • 外科休克病人的护理
  • C-study(五).2
  • 使用Ultralytics YOLO进行模型验证
  • MICCAI 2023 List of Papers
  • 压缩文件的解析方式
  • rocket mq保证消息幂等性
  • Elasticsearch基本操作
  • 设计模式探索:责任链模式
  • OceanBase 配置项系统变量实现及应用详解(3):新增配置项的方法
  • PCI PTS 硬件安全模块(HSM)模块化安全要求 v5.0
  • javaweb中的请求与响应--基于postman工具的应用(附带postman的详细安装步骤)
  • StarRocks下载使用说明和基础操作
  • 桥接模式案例
  • Spring源码二十二:Bean实例化流程五
  • Unity3D中UI层级改变详解
  • centos安装数据库同步工具sqoop并导入数据,导出数据,添加定时任务
  • asp .net core 避免请求body数据量过大
  • 搭建discuz论坛(lvs+nginx+http+mysql+nfs)8台服务器
  • 就业平台小程序的设计
  • hid-ft260驱动学习笔记 5 - ft260_i2c_probe