C# 视频监控系列(15):总结贴——可能用到的C# WinForm技术小结

简介:

前言

     本章主要把可能用到的C# WinForm 功能性代码在这里汇总一下,以备实现其他功能来满足客户的其他需求,或者方便自己开发。

 

注意

     本系列文章限于学习交流,注重过程,由于涉及公司,所以不提供源代码下载,非常抱歉!!但是请大家放心,核心、实现以及其他能够贴出来的代码我都会贴出来,并且争取尽所能的回答留言里的每一个问题,感谢大家关注,欢迎交流 :)

 

系列

     1.     C# 视频监控系列(1):准备

     2.     C# 视频监控系列(2):客户端——封装API

     3.     C# 视频监控系列(3):客户端——连接服务器

     4.     C# 视频监控系列(4):客户端——音频接收和抓图

     5.     C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)

     6.     C# 视频监控系列(6):服务器端——封装API(上) [HikServer.dll]

     7.     C# 视频监控系列(7):服务器端——封装API(下) [DS40xxSDK.dll]

     8.     C# 视频监控系列(8):服务器端——预览和可被客户端连接

     9.     C# 视频监控系列(9):服务器端——数据捕获(抓图 + 录像)

     10.     C# 视频监控系列(10):服务器端——验证、设置画面质量、字幕叠加、板卡序列号

     11.     C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]

     12.     C# 视频监控系列(12):H264播放器——播放录像文件

     13.     C# 视频监控系列(13):H264播放器——控制播放和截图 

     14.     C# 视频监控系列(14):总结贴——VC++代码转成C#小结 

     15.     C# 视频监控系列(15):总结贴——可能用到的C# WinForm技术小结 

 

正文

     1.     IntPtr转换成byte[]

         public   byte [] ConvertToBytes(IntPtr dataBuf,  int  length)
        {
            
byte [] byteBuf  =   new   byte [length];
            Marshal.Copy(dataBuf, byteBuf, 
0 , length);
            
return  byteBuf;
        }

     2.     读写INI文件

          一般用于读写配置文件

复制代码
     ///   <summary>
    
///  读写INI文件
    
///   </summary>
     public   class  IniFile
    {
        
///   <summary>
        
///  文件INI名称
        
///   </summary>
         public   string  Path;

        
///   <summary>
        
///  声明读写INI文件的API函数 
        
///   </summary>
        
///   <param name="section"></param>
        
///   <param name="key"></param>
        
///   <param name="val"></param>
        
///   <param name="filePath"></param>
        
///   <returns></returns>
        [DllImport( " kernel32 " )]
        
private   static   extern   long  WritePrivateProfileString( string  section,  string  key,  string  val,  string  filePath);


        [DllImport(
" kernel32 " )]
        
private   static   extern   int  GetPrivateProfileString( string  section,  string  key,  string  def, StringBuilder retVal,  int  size,  string  filePath);

        
///   <summary>
        
///  类的构造函数,传递INI文件名
        
///   </summary>
        
///   <param name="inipath"></param>
         public  IniFile( string  inipath)
        {
            
//
            
//  TODO: Add constructor logic here
            
//
            Path  =  inipath;
        }

        
///   <summary>
        
///  写INI文件
        
///   </summary>
        
///   <param name="Section"></param>
        
///   <param name="Key"></param>
        
///   <param name="Value"></param>
         public   void  IniWriteValue( string  Section,  string  Key,  string  Value)
        {
            WritePrivateProfileString(Section, Key, Value, 
this .Path);

        }

        
///   <summary>
        
///  读取INI文件指定
        
///   </summary>
        
///   <param name="Section"></param>
        
///   <param name="Key"></param>
        
///   <returns></returns>
         public   string  IniReadValue( string  Section,  string  Key)
        {
            StringBuilder temp 
=   new  StringBuilder( 5000 );
            
int  i  =  GetPrivateProfileString(Section, Key,  "" , temp,  5000 this .Path);
            
return  temp.ToString();

        }
    }
复制代码

     3.     获取网卡号

          可用于软件加密

复制代码
         ///   <summary>
        
///  获得网卡号
        
///   </summary>
        
///   <returns></returns>
         public   static   string  GetNetCardMacAddress()
        {
            ManagementClass mc 
=   new  ManagementClass( " Win32_NetworkAdapterConfiguration " );
            ManagementObjectCollection moc 
=  mc.GetInstances();
            
string  str  =   "" ;
            
foreach  (ManagementObject mo  in  moc)
            {
                
if  (( bool )mo[ " IPEnabled " ==   true )
                    str 
=  mo[ " MacAddress " ].ToString();
            }
            
return  str;
        }
复制代码

     4.     获取采集卡序列化

          可用于软件加密绑定,注意结构体DS_BOARD_DETAIL.sn是16位的,但是实际只有12位,VC++源码也只取了12位,后门都是0。

复制代码
         ///   <summary>
        
///  获取板卡序号
        
///   </summary>
        
///   <returns></returns>
         public   static   string  GetBoardSN()
        {
            
uint  boardCount  =  HikVisionSDK.GetBoardCount();
            StringBuilder sn 
=   new  StringBuilder();
            
for  ( uint  i  =   0 ; i  <  boardCount; )
            {
                DS_BOARD_DETAIL boardDetail 
=   new  DS_BOARD_DETAIL();
                HikVisionSDK.GetBoardDetail(i, 
ref  boardDetail);
                
for  ( int  j  =   0 ; j  <   12 ; j ++ )
                {
                    sn.Append((
char )(boardDetail.sn[j]  +   0x30 ));
                }
                
break ;
            }
            
return  sn.ToString();
        }
复制代码

     5.     全屏显示视频窗口

复制代码
        ///   <summary>
        
///  全屏
        
///   </summary>
        
///   <param name="tsmFullScreen"> 右键 </param>
        
///   <param name="pVideo"> 显示视频的窗口 </param>
        
///   <param name="cs"> 视频连接成功返回的值 </param>
         private   void  FullScreen(ToolStripMenuItem tsmFullScreen, Panel pVideo,  int  cs)
        {
            
if  ( this .WindowState  ==  System.Windows.Forms.FormWindowState.Maximized)
            {
                tsmFullScreen.Text 
=   " 全屏窗口 " ;
                
this .FormBorderStyle  =  System.Windows.Forms.FormBorderStyle.FixedSingle;
                
this .WindowState  =  System.Windows.Forms.FormWindowState.Normal;
                
this .TopMost  =   false ;
                pVideo.Width 
=  pre_Width;
                pVideo.Height 
=  pre_Height;
                pVideo.Top 
=  pre_Top;
                pVideo.Left 
=  pre_Left;

                
// 隐藏其他控件
                HideOtherControls(pVideo,  true );

                minPanel(pVideo, cs);
            }
            
else
            {
                tsmFullScreen.Text 
=   " 关闭全屏 " ;
                
this .FormBorderStyle  =  System.Windows.Forms.FormBorderStyle.None;
                
this .WindowState  =  System.Windows.Forms.FormWindowState.Maximized;
                
this .TopMost  =   true ;

                pre_Width 
=  pVideo.Width;
                pre_Height 
=  pVideo.Height;
                pre_Top 
=  pVideo.Top;
                pre_Left 
=  pVideo.Left;

                pVideo.Width 
=   this .Width;
                pVideo.Height 
=   this .Height;
                pVideo.Top 
=   0 ;
                pVideo.Left 
=   0 ;

                
// 显示其他控件
                HideOtherControls(pVideo,  false );
            }
        }
复制代码

     6.     其他代码

复制代码
         // 判断是不是IP地址
         public   bool  IsIPAddress( string  ip)
        {
            
return  Regex.IsMatch(ip,  @" ^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$ " );
        }
        
///   <summary>
        
///  是否是无符号整数(正数)
        
///   </summary>
        
///   <param name="value"></param>
        
///   <returns></returns>
         public   bool  IsUInt( string  value)
        {
            
return  Regex.IsMatch(value,  @" ^\d*$ " );
        }
复制代码

 

结束

     实际开发中远不只这么多,基本上也是有一个这样的功能需求就去GOOGLE一段代码出来,还有其他如delegate和event在窗体之间使用,分屏也是简单的采用了4个Panel,当放大时就分别隐藏其他Panel等等,就不一一列举了,多查查资料就行了: )       


转载:http://www.cnblogs.com/over140/archive/2009/04/04/1429298.html

目录
相关文章
|
7月前
|
人工智能 运维 算法
基于 C# 深度优先搜索算法的局域网集中管理软件技术剖析
现代化办公环境中,局域网集中管理软件是保障企业网络高效运行、实现资源合理分配以及强化信息安全管控的核心工具。此类软件需应对复杂的网络拓扑结构、海量的设备信息及多样化的用户操作,而数据结构与算法正是支撑其强大功能的基石。本文将深入剖析深度优先搜索(Depth-First Search,DFS)算法,并结合 C# 语言特性,详细阐述其在局域网集中管理软件中的应用与实现。
179 3
|
6月前
|
机器学习/深度学习 人工智能 Kubernetes
开源AI驱动的商业综合体保洁管理——智能视频分析系统的技术解析
智能保洁管理系统通过计算机视觉与深度学习技术,解决传统保洁模式中监管难、效率低的问题。系统涵盖垃圾滞留监测、地面清洁度评估、设施表面检测等功能,实现高精度(96%以上)、实时响应(&lt;200毫秒)。基于开源TensorFlow与Kubernetes架构,支持灵活部署与定制开发,适用于商场、机场等场景,提升管理效率40%以上。未来可扩展至气味监测等领域,推动保洁管理智能化升级。
278 26
|
7月前
|
传感器 人工智能 边缘计算
AI赋能油田巡检——无人机视频监控系统的技术解析
无人机油田巡检系统融合无人机硬件与AI视频监控技术,实现全域覆盖、智能分析和高效管理。通过多旋翼/固定翼无人机搭载高分辨率摄像头及传感器,采集多维数据;结合YOLOv9等算法进行异常检测,准确率高达98%。系统支持5G实时传输、边缘计算及集中化管理平台,提供可视化监控与预测性维护。基于开源框架设计,灵活扩展且成本低,大幅提升油田巡检效率与安全性。
787 0
|
8月前
|
缓存 监控 算法
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
192 2
|
7月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
290 0
|
10月前
|
Web App开发 Linux C#
C# 网页截图全攻略:三种技术与 Chrome 路径查找指南
本文主要介绍了在 C# 中实现网页截图的几种技术及相关要点。涵盖了 PuppeteerSharp、Selenium 和 HtmlToImage 三种方式,分别阐述了它们的安装步骤及核心代码。同时,针对在 C# 中寻找 Windows 上 chrome.exe 路径这一问题,分析了未安装 Google Chrome 和已安装两种情况下的查找原因,并给出了相关参考链接,还列举了一系列与 C# 使用 Selenium、获取 chrome.exe 路径以及在 Linux 上部署相关的参考资料。
394 11
|
9月前
|
人工智能 监控 数据安全/隐私保护
AI视频监控在大型商场的隐私保护技术
为保障隐私合规,商场采取数据加密与匿名化处理,防止敏感信息泄露;同时通过透明性声明和合法授权,确保顾客知情并同意监控措施。技术手段包括加密算法保护、去除身份识别细节,并在显眼位置张贴隐私政策,采用电子屏幕、语音提示或二维码获取顾客同意,确保监控行为合法合规。
319 0
|
10月前
|
存储 人工智能 监控
AI视频监控技术在公租房管理中的应用:提升监管精准度与效率
该AI视频监控系统具备1080P高清与夜视能力,采用深度学习技术实现高精度人脸识别(误识率1%),并支持实时预警功能,响应时间小于5秒。系统支持私有化部署,保障数据隐私安全,适用于大规模公租房社区管理,可容纳10万以上人脸库。基于开源架构和Docker镜像,一键部署简单快捷,确保24小时稳定运行,并提供详细的后台数据分析报表,助力政府决策。
338 5
|
11月前
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
296 12
|
11月前
|
机器学习/深度学习 传感器 人工智能
AI视频监控系统在养老院中的技术实现
AI视频监控系统在养老院的应用,结合了计算机视觉、深度学习和传感器融合技术,实现了对老人体征、摔倒和异常行为的实时监控与分析。系统通过高清摄像头和算法模型,能够准确识别老人的动作和健康状况,并及时向护理人员发出警报,提高护理质量和安全性。
663 14

热门文章

最新文章

下一篇
oss云网关配置