WPF中在摄像头视频上叠加控件的解决方案

WPF中在摄像头视频上叠加控件的解决方案一、视频呈现  前段时间,在一个wpf的项目中需要实时显示ip摄像头,对此的解决方案想必大家都应该知道很多。在winform中,我们可以将一个控件(一般用panel或者pictruebox)的句柄丢给摄像头的sdk以实现该功能,而在wpf中我们同样可以使用该方案快速实现。  我们以海康平台为例,海康的sdk就需要我们传递一个控件的句柄,winform中可以直
阅读本文

C#程序实现软件开机自动启动的两种常用方法

C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法函数的示例与实例带详细注释方法一:将软件的快捷方式创建到计算机的自动启动目录下(不需要管理员权限)1.必要引用using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO;
阅读本文

C#监听窗体新建/鼠标移入移出

在新建window窗体时会激活方法,并循环所有窗体,鼠标移动在重写方法的页面中也会激活winform直接在继承了From窗体cs中protected override void WndProc(ref Message m) { if (m.Msg == 23)// m.Msg是窗体消息号 { } }  wpf在继承WIndows窗体cs中protected override
阅读本文

C# Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)

概述C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常。处理跨线程更新Winform UI控件常用的方法有4种:1. 通过UI线程的SynchronizationContext的Post/Send方法更新;2. 通过UI控件的Invoke/BeginInvoke方法更新;3. 通过BackgroundWorker取代T
阅读本文

Winform 窗体关闭事件

//窗体关闭前事件 private void FrmMain_FormClosing(object sender, FormClosingEventArgs e) { DialogResult result = MessageBox.Show(“确认退出吗?“, “退出询问“, MessageBoxButton
阅读本文

Wix 安装部署教程(十一) ---QuickWix

Wix 安装部署教程(十一) ---QuickWix      这次发布的是这两天做的一个WIX工具QuickWIX,主要解决两个问题点1.对大文件快速生成wix标签(files,Directories,ComponentRef);2.比较前后两次工程的差异。大的WIX工程有好几千个文件,开发人员增加dll,或者资源文件都是不确定的,而且很多时候我们无法直接取代,所以需要一个对比的功能,来告诉打包
阅读本文

C# WinForm控件之advTree

1.对advTree操作都是在Nodes属性基础上的如:新建 一个Node并添加到tree中Node n = new Node(); n.Text = “小张“; avt.Nodes.Add(n); n = new Node(“小王“); avt.Nodes.Add(n);2.取选中节点的值avt.SelectedNode.Text;
阅读本文

WinForm排列MDI子窗体

如果一个MDI窗体中有多个子窗体同时打开,假如不对其排列顺序进行调整,那么界面会非常的混乱,而且不容易浏览。那么如何解决这个问题呢?我们可以通过使用带有MdiLayout枚举的LayoutMdi方法来排列多文档界面父窗体中的子窗体。语法:public void LayoutMdi (MdiLayout value)value:是MdiLayout枚举值之一,用来定义MDI子窗体的布局。MdiLay
阅读本文

C#中关于TabControl设置选项卡的大小问题

今天在使用Winform下的TabControl控件时,发现选项卡大小的调整不仅仅是设置宽度和高度那么简单,下面 对TabControl选项卡大小的设置进行总结(以显示在顶部的选项卡为例):      设置选项卡大小的第一步就是设置TabControl的SizeMode属性,SizeMode属性返回枚举TabSizeMode, TabSizeMode有三个值,分别是Normal,Fi
阅读本文

如何学习一门编程语言

前言很多人喜欢争论什么什么编程语言好,我认为这个话题如果不限定应用范围,就毫无意义。每种编程语言必然有其优点和缺点,这也决定了它有适合的应用场景和不适合的应用场景。现代软件行业,想一门编程语言包打天下是不现实的。这中现状也造成了一种现象,一个程序员往往要掌握多种编程语言。学习任何一门编程语言,都会面临的第一个问题都是:如何学习 XX 语言?我不想说什么多看、多学、多写、多练之类的废话。世上事有难易
阅读本文

c#POST请求php接口

POST请求php接口/// <summary> /// 指定Post地址使用Get 方式获取全部字符串 /// </summary> /// <param name=“url“>请求后台地址</param> /// <returns></returns> public string Po
阅读本文

Winform + ADO.Net 实现分页查询

使用ADO.NET + 存储过程,在winform里实现分页查询的功能。实现思路:使用存储过程,根据查询条件,查出若干个表;返回DataSet,再去读取DataSet的Table。以一个超市管理系统里面登录日志的查询为例,做示例代码。数据库表结构一部分测试数据:存储过程编写 1 if exists(select * from sysobjects where name=‘usp_LoginLog
阅读本文

线程操纵UI问题

WPF只允许UI线程修改UI,其他线程必须通过Invoke、委托(安全性)Winform可以开启/关闭“只允许UI线程修改UI”在WPF中非UI线程修改UI的方法非UI线程直接修改UI,会报错System.InvalidOperationException:“调用线程无法访问此对象,因为另一个线程拥有该对象。” 正确的做法是Task t = new Task(() => { NameLab
阅读本文

在C#中使用WIA获取扫描仪数据

在C#中使用WIA获取扫描仪数据(一)WIA(Windows Image Acquire,最新版本2.0)是Windows中一组从设备中捕获图像的标准API集合,它可以从设备(例如扫描仪、数码相机)中获取静态图像,以及管理这些设备。它既是API,又是DDI(Device Driver Interface)。因此,只要是满足这个规范的设备,都能够利用WIA直接和应用程序交互,而不是通过驱动。WIA甚
阅读本文

Win form碎知识点

判断1.ds不能为空 2.ds的表数量必须大于0 3.判断ds的第一个表中的行数必须有 if (ds.Tables.Count > 0 && ds != null && ds.Tables[0].Rows.Count > 0) 首先ds不能为空,然后ds大集合里的table要有(数量>0)ds.tables.count>0 ds.tables[0].Rows.Count>
阅读本文

winform combox禁用鼠标滚轮小技巧

winform原生combox,点击之后,焦点一直都在,在还没点其他地方的时候,滚动滚轮会导致值的改变。原理很简单:当mouse_leave的时候,取消他的焦点就可以了。代码如下: private void Cmb_MouseLeave(object sender, EventArgs e)         {             if(sender.GetType() == typeof(C
阅读本文