关于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);}}
}
六:隐藏标题栏后需要可拖拽缩放
可通过游标去实现我这边就不粘出来了
相关文章:
关于C# 开发Winfrom事后总结
一:要求能读取文件夹中视频及图片并判断 private void Form1_Load(object sender, EventArgs e){string foldPath "路径";//获取该目录下的文件 string[] files Directory.GetFiles(foldPath "\\", "*.*", System.IO.SearchOption…...
Python学习笔记35:进阶篇(二十四)pygame的使用之音频文件播放
前言 基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。 我们的下一步目标是完成python crash course中的外星人入侵项目,这是一个2D游戏项目。在这之前ÿ…...
Transformer-LSTM预测 | Matlab实现Transformer-LSTM多变量时间序列预测
Transformer-LSTM预测 | Matlab实现Transformer-LSTM多变量时间序列预测 目录 Transformer-LSTM预测 | Matlab实现Transformer-LSTM多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现Transformer-LSTM多变量时间序列预测,Transf…...
常见的点云数据的获取方式
1. 激光雷达(LiDAR) 获取方式:激光脉冲测距原理:激光雷达通过发射激光脉冲并接收反射信号来测量物体与传感器之间的距离。计算激光脉冲从发射到返回所需的时间,并将其转换为距离,从而生成三维点云数据。常…...
java 中钻石操作符 <> 的使用场景
在 Java 中,<> 符号通常被称为 "钻石操作符" (Diamond Operator),主要用于泛型类型的简化表示。<> 操作符引入于 Java 7,以减少泛型实例化时的冗余代码。以下是 <> 符号在 Java 中的几种主要使用场景:…...
C++ 定时器触发
c定时器,能够定时触发,即每隔一段固定时间执行一下函数 #include <iostream> #include <thread> #include <chrono> #include <signal.h> #include <time.h> #include <cstring> #include <glog/logging.h>#…...
【Docker 入门】
文章目录 概要 一、安装Docker CE1.1.配置阿里云镜像加速【可选】1.2.重启 二、Docker版本选择三、Docker指令1.Docker命令1.1.run1.2.start/stop/restart1.3.kill1.4.rm1.5.create1.6.ps1.7.exec1.8.top1.9.port 2.Dockerfile关键字3.镜像打包4.镜像运行5.镜像导入导出6.镜像查…...
现在有什么副业可以让人快速上岸?可以试试这个行业上岸其实不难
人为什么要努力赚銭? 当你想结婚的时候, 你可以慢慢挑,不着急。 当父母年老遭遇大病的时候, 你有机会尽孝。 当孩子需要时,你不会囊中羞涩。 年轻时以为金钱最重要, 如今年纪大了,发现这…...
每天一个数据分析题(四百二十)- 一元线性回归模型
现在通过参数估计得到一个一元线性回归模型为y 3x4,在回归系数检验中下列说法错误的是( ) A. 检验统计量是t统计量 B. 原假设是β13 C. 若拒绝原假设,就认为自变量与因变量存在显著的线性关系 D. 可以用P值与显著性水平比较结…...
day11:01文件处理
一、文件与文件模式介绍 1、什么是文件 文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口 用户/应用程序(open()) 操作系统(文件) 计算机硬件(硬盘)2、为何要用文件 ①用户/应用程序可以通过文件将数据永久保存…...
一场夏测杀出个“双冠王”,极越01成为纯电SUV标杆
文 | AUTO芯球 作者 | 雷慢 万万没想到,懂车帝夏测运动会杀出一匹最大的黑马,竟然是极越01。 当前正在进行的懂车帝夏测运动会,在“纯电SUV/MPV续航达成率”赛事中,极越01以85.8%的续航达成率获得第一名。并且由于赛制规则限制…...
外科休克病人的护理
一、引言 休克是外科常见的危急重症之一,它是由于机体遭受强烈的致病因素侵袭后,有效循环血量锐减、组织灌注不足所引起的以微循环障碍、细胞代谢紊乱和器官功能受损为特征的综合征。对于外科休克病人的护理,至关重要。 二、休克的分类 外科休克主要分为低血容量性休克(包括…...
C-study(五).2
逻辑运算符 连接两个完整的关系表达式。 && 逻辑与,ab都为真时,a&&b的值真,其余时候假。 || 逻辑或,ab都为假时,a||b的值假,其余时候真。 ! 逻辑非、只需要一个运算对象,a真&a…...
使用Ultralytics YOLO进行模型验证
使用Ultralytics YOLO进行模型验证 使用Ultralytics YOLO进行模型验证简介为什么使用Ultralytics YOLO进行验证?验证模式的主要功能使用示例YOLO模型验证参数使用参数进行验证的示例使用Ultralytics YOLO进行模型验证 简介 验证是机器学习管道中的关键步骤,可以评估训练模型…...
MICCAI 2023 List of Papers
MICCAI 2023 - Accepted Papers, Reviews, Author Feedback List of Papers https://conferences.miccai.org/2023/papers/ • 3D Arterial Segmentation via Single 2D Projections and Depth Supervision in Contrast-Enhanced CT Images • 3D Dental Mesh Segmentation U…...
压缩文件的解析方式
一、解压缩zip格式 步骤: 1.根据压缩文件原始路径(字符串),创建源文件对象(File对象) 2.创建根目录对象,传入源文件的根目录 3.判断根目录,是否已经存在 ①如果存在,则删除; ②如果不存在,则创建根目录。 4.可以用Zip…...
rocket mq保证消息幂等性
在互联网应用中,尤其在网络不稳定的情况下,消息队列 RocketMO 的消息有可能会出现重复,这个重复简单可以概括为以下情况: 1、发送时消息重复 当一条消息已被成功发送到服务端并完成持久化,此时出现了网络闪断或者客户端宕机&…...
Elasticsearch基本操作
文章目录 1.1 索引库操作1.1.1 创建索引库 :1.1.2 删除索引库 :1.1.3 判断索引库是否存在 1.2 文档操作1.2.1 新增文档1.2.2 查询文档1.2.3 删除文档1.2.4 修改文档1.2.5 批量导入文档 1.3 RestClient查询1.3.1 普通查询1.3.2 复合条件查询1.3.3 分页排序查询1.3.4 高亮分页查询…...
设计模式探索:责任链模式
1. 什么是责任链模式 责任链模式 (Chain of Responsibility Pattern) 是一种行为型设计模式。定义如下: 避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并且沿着这条链传递请求&…...
OceanBase 配置项系统变量实现及应用详解(3):新增配置项的方法
本专题的第一篇文章,配置项的定义及使用方法,详细阐述了配置项的基础用法。对于那些对源码抱有浓厚兴趣的同学来说,或许还希望深入了解配置项的实现原理,甚至渴望亲自添加新的配置项,以满足个性化的功能需求。 本文通…...
Phantom Camera最佳实践:避免常见陷阱的20个专业建议
Phantom Camera最佳实践:避免常见陷阱的20个专业建议 【免费下载链接】phantom-camera A Camera addon for Godot 4. Inspired by Cinemachine. 项目地址: https://gitcode.com/gh_mirrors/ph/phantom-camera Phantom Camera是Godot 4引擎中一款强大的相机插…...
MJh代码混淆实战指南:使用Obfuscar构建坚不可摧的安全防线
在当今数字化时代,保护.NET应用程序的源代码安全变得尤为重要。你是否担心自己的知识产权被轻易窃取?是否希望防止竞争对手通过反编译分析你的核心业务逻辑?今天,我将为你详细介绍一款强大的开源混淆工具——Obfuscar,…...
帕拉丁调试指南之SDL 语言编写指南(快速参考)
1. SDL 文件基本结构SDL 程序由三个主要部分组成:text// 1. 全局定义段(可选) scope ...; define ...; enum ...; tdef ...; trigger ...; if (...) trigger; ...// 2. 实例定义段(至少一个实例,可多个) i…...
优化TJpgDec在MM32F5微控制器上的图像解码性能 - 基于MindSDK的实践探索
1. TJpgDec在嵌入式系统中的独特价值 第一次接触TJpgDec是在三年前的一个智能家居项目里,当时需要在资源受限的STM32F407上实现图片显示功能。市面上常见的JPEG解码库要么体积庞大,要么对内存要求极高,直到发现了ChaN开发的这个轻量级解决方案…...
如何用Mi-Create打造专属小米手表表盘:零基础设计师的终极指南
如何用Mi-Create打造专属小米手表表盘:零基础设计师的终极指南 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 想让你的小米手表与众不同吗&#x…...
2025届毕业生推荐的六大AI辅助论文平台解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 它可以助力进行文献梳理,帮助研究者快速筛选出有价值的文献资料,人工…...
3步解决视频转PPT难题:智能幻灯片提取工具全攻略
3步解决视频转PPT难题:智能幻灯片提取工具全攻略 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 在数字化学习与办公场景中,从视频中提取PPT内容一直是效率瓶…...
告别驱动噩梦:在 Ubuntu 22.04 上为 RTX 5070 显卡手动编译安装驱动的完整心路历程
告别驱动噩梦:在 Ubuntu 22.04 上为 RTX 5070 显卡手动编译安装驱动的完整心路历程 1. 缘起:当官方驱动安装成为一场噩梦 那是一个普通的周末早晨,我满怀期待地拆开了刚到的RTX 5070显卡。作为一名长期使用Ubuntu进行深度学习开发的工程师&…...
Wan2.2-I2V-A14B开源模型:符合ISO/IEC 23053 AI系统可解释性要求
Wan2.2-I2V-A14B开源模型:符合ISO/IEC 23053 AI系统可解释性要求 1. 镜像概述与核心价值 Wan2.2-I2V-A14B私有部署镜像是一款专为文生视频场景优化的AI模型运行环境。这个镜像最突出的特点是完全符合ISO/IEC 23053标准对AI系统可解释性的要求,让用户不…...
HoRain云--Bootstrap5图像形状全攻略
🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...
