关于C# 开发Winfrom事后总结
创始人
2025-01-08 09:34:06
0

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

 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                   //From1_cs  // 强制重新加载app.config  ConfigurationManager.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();             #endregion             this.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();         #endregion         this.axWindowsMediaPlayer1.URL = filePath;         //1 的时候是关闭,结束了         while (!((int)axWindowsMediaPlayer1.playState == 1))         {             Delay(500);         }      } }

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

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

相关内容

热门资讯

经核实!九江讨赏辅助中至小程序... 经核实!九江讨赏辅助中至小程序(辅助)原来真的有辅助攻略(有挂教学)1、完成九江讨赏辅助中至小程序有...
相较于以往!青龙辅助最新下载(... 相较于以往!青龙辅助最新下载(辅助)总是真的是有辅助插件(详细教程)1、每一步都需要思考,不同水平的...
第三方插件!蜂娱辅助(辅助)切... 第三方插件!蜂娱辅助(辅助)切实确实有辅助挂(有挂讲解)1、金币登录送、破产送、升级送、活动送。详细...
近日!朋朋政和510k辅助器(... 近日!朋朋政和510k辅助器(辅助)都是真的有辅助神器(有挂透视)1、每一步都需要思考,不同水平的挑...
2026版技巧!途游游戏辅助脚... 2026版技巧!途游游戏辅助脚本(辅助)原来是有辅助软件(的确有挂)1、任何途游游戏辅助脚本透视是真...
连日来!圣盛鄂州晃晃辅助(辅助... 连日来!圣盛鄂州晃晃辅助(辅助)总是是真的有辅助软件(有挂方针)1、打开软件启动之后找到中间准星的标...
据权威媒体报道!闲来辅助软件靠... 据权威媒体报道!闲来辅助软件靠谱吗(辅助)一直是有辅助技巧(有挂功能)一、闲来辅助软件靠谱吗可以开透...
做出回应!圣盛鄂州晃晃辅助(辅... 做出回应!圣盛鄂州晃晃辅助(辅助)一直真的是有辅助器(真是有挂);该软件可以轻松地帮助玩家将圣盛鄂州...
有玩家发现!丰城呱呱辅助器(辅... 有玩家发现!丰城呱呱辅助器(辅助)竟然是有辅助工具(有挂存在)1、首先打开丰城呱呱辅助器辅助器下载最...
于此同时!九九联盟辅助神器(辅... 于此同时!九九联盟辅助神器(辅助)确实确实有辅助工具(有挂解密)1)九九联盟辅助神器有没有挂:进一步...