- 博客(23)
- 资源 (20)
- 收藏
- 关注
原创 c# RTSP播放器
ONVIF ODM在onvif领域里名气很大,是一款开源的NVC实现。其实现采用了c# c++ F#。项目很大,也很复杂。最近研究了一下,自己调用其类库写了一个c#版的RTSP的播放器。难度不大。但要明白其中原理,还需要多研究研究ODM源码。效果图:
2015-08-28 10:30:03 10775 2
原创 c#录制屏幕 超级简单!
使用Aforge.net对屏幕进行截图,并将每一张BITMAP写到AVI文件中。超级简单!AFORGE.NET的ScreenCaptureStream性能有限,目前测试基本能达到10帧左右。设置AVIWriter的FrameRate为8帧,但是播放起来像快进一样,目前还没有找到原因。暂时采取一个New Frame到达时,多写几次的方法进行规避。有知道如何处理的请联系我。详细代码
2015-08-27 17:00:13 15760 9
原创 C#屏笔 GDI+屏笔 桌面画图(二)
本次屏笔的实现采用隐藏Form的方式实现,ALT+Q激活屏笔,再次点击取消。激活屏笔时,先cpoy屏幕内容到bitmap,然后将其显示到picturebox,之后最大化Form,然后再用Graphics记录鼠标轨迹画图。使用钩子捕捉键盘和鼠标全局事件。全局键盘鼠标钩子请参考http://blog.csdn.net/q317379184/article/details/47979309使
2015-08-26 11:41:32 3066
原创 GDI+桌面画图
很简陋的一共桌面画图工具。在桌面画图主要需要用到GetDC这个API,该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。通过该函数是为了获取桌面的绘图图面。然后用钩子勾住鼠标全局事件,进行画线。效果很差,其他Paint消息会将自己画的线重绘掉。看了一些方案说是需要创建一共全屏窗体,然后重绘桌面背景到窗体。再窗体
2015-08-25 17:08:43 2344
翻译 C#键盘鼠标钩子
亲测可用 /* * 老外写的一个C#钩子类,写的非常好。 * 捕获键盘鼠标所有事件 * 模拟鼠标和模拟键盘操作 * * */ /// /// 鼠标和键盘钩子的抽象类 /// public abstract class GlobalHook { #region Wind
2015-08-25 16:41:12 4975 1
原创 GDI+屏幕截图(二)
上一篇讲了如何写一个很low的截屏工具,这次进行稍微美化,对未选择区域的图片加上透明度,效果如下图。 主要用到的的代码如下: /// 设置图片的透明度 /// /// 原图 /// 透明度0-255 /// private Bitmap SetPictureAl
2015-08-25 16:26:00 2478
转载 GDI+什么是ColorMatrix
ColorMatrix(色彩矩阵),是GDI+里用来调整图片色彩的矩阵。 什么是矩阵,说白了就是C#里的二维数组。 那么这个矩阵调整色彩的原理是什么,他是怎么来调整色彩的呢?这个要从线性代数里的矩阵相乘说起。 以下段落学过线性代数的读者可以跳过,这里我用自己的理解来描述下矩阵相乘的算法和结果。在线性代数里,两个矩阵相乘,是这样计算的: A矩阵乘以B矩阵,那么新生成一个矩阵C
2015-08-25 16:14:32 1138
原创 GDI+屏幕截图
很简陋的一个屏幕截图工具,支持任意尺寸。FullFrom是一个子窗体,当点击主窗体的截图按钮时,先从GDI+获取整个屏幕截图,传递 给FullForm,然后再将FullForm全屏最大化显示。目前只支持单屏幕,多个屏幕未考虑。代码写的比较乱,注重功能实现。后续可以用钩子捕获全局系统按键。如ctrl+alt+a,捕获这三个按键进行截图。public partial class Fu
2015-08-24 15:19:35 2418
原创 GDI+画电子印章
使用GDI+画一个电子印章,初次使用,请多多指教。以下是Form代码,大家应该都会用,项目文件就不上传了。 public partial class Form1 : Form { public Form1() { InitializeComponent(); this.SetStyle(Control
2015-08-21 16:01:04 1453
原创 爬虫
今天看了下别写的一共简单的爬虫工具。大概原理就是基于的一个root url利用httpwebrequest去抓取html内容,提前其中的链接(剔除了图片、css、js等),逐一保存下来。不过这个只适用于一些门户网站,有些网站的登录页面没有任何链接。需要登陆后才能浏览。所以权限这一块也很复杂,对于不同的网站需要不同的实现。目前来看使用工厂方法是够用了。当然,光是做这个还是不够的。这也紧紧
2015-08-20 16:15:29 543
原创 Equals和==比较
总结一下: 对于字符串来说,两个比较的都是对象的值,并且是等效的,这是因为MS重写了==运算符和Equals方法所致 对于非字符串的其他引用类型(非匿名类型)两个比较的都是对象的引用,并且是等效的; 对于匿名类型,Equal()方法比较的是类型的状态,如果两个类型的属性和值都相同,就返回true;==比较的是对象的引用。
2015-08-20 14:34:14 596
转载 var
在.NET 3.0后微软引入了隐式类型var,编译器可以自动判断变量的类型,通过var这个隐式类型,可以提高开发人员的开发效率,很多时候可以不考虑对象的类型,编译器会自动帮我们判断使用隐式类型和使用其他显式类型的效果是一样的,只是在编译的过程IDE自动判断类型,所以很多时候我们不用考虑变量的具体类型.其实也就是弱化类型的定义VAR可代替任何类型编译器会根据上下文来判断你到底是想
2015-08-20 14:13:22 582
原创 c#反射
public class Program { static string str="困"; static string str2 { get { return str; } set { str = value; } } static void StaticWrit
2015-08-20 10:35:21 415
原创 c#索引器
索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便、直观的被引用。索引器非常类似于属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用。定义了索引器的类可以让您像访问数组一样的使用 [ ] 运算符访问类的成员。(当然高级的应用还有很多,比如说可以把数组通过索引器映射出去等等) 鸡群3 jiqun3 =
2015-08-19 09:52:49 399
转载 Struct与Class的区别
1,class 是引用类型,structs是值类型2,当你实例化一个class,它将创建在堆上。而你实例化一个struct,它将创建在栈上3,当我们将class作为参数传给一个方法,我们传递的是一个引用。struct传递的是值而非引用。4,Class 可以有明显的无参数构造器,但是Struct不可以5,类使用前必须new关键字实例化,Struct不需要6
2015-08-18 20:16:24 887
原创 ManualResetEvent和AutoResetEvent的区别
class Program { /* * * ManualResetEvent都可以阻塞一个或多个线程, * 直到收到一个信号告诉ManualResetEvent不要再阻塞当前的线程。 * ManualResetEvent手动reset * ManualResetEvent会给线程1
2015-08-18 17:16:14 421
转载 c#设计模式-总结(针对GOF23)
比较 设计模式常用程度适用层次引入时机结构复杂度Abstract Factory比较常用应用级设计时比较复杂Builder一般代码级编码时一般Factory Method
2015-08-18 16:24:33 891
原创 c# GDI画圆
private void button1_Click(object sender, EventArgs e) { Bitmap bt = new Bitmap(100, 100); Graphics g = Graphics.FromImage(bt); Rectangle rect = new Rectang
2015-08-18 16:21:55 2083 1
转载 unsafe与fixed
unsafe 关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的。有关更多信息,请参见不安全代码和指针(C# 编程指南)。可以在类型或成员的声明中使用 unsafe 修饰符。因此,类型或成员的整个正文范围均被视为不安全上下文。若要编译不安全代码,必须指定 /unsafe 编译器选项。无法通过公共语言运行库验证不安全代码。6、 Fixed
2015-08-18 15:27:15 402
原创 c#实现foreach
方式:第一种,通过继承IEnumerable接口实现foreach语句。 包括MoveNext、Reset函数和Current属性,以便GetEnumerator函数能获取枚举数。第二种,用迭代器实现枚举器。迭代器是可以返回相同类型的值的有序序列的一段代码。迭代器可用作方法、运算符或 get 访问器的代码体。迭代器代码使用 yield retur
2015-08-18 15:22:27 743
转载 拆箱装箱
1、 装箱和拆箱是一个抽象的概念 2、 装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来 例如: int val = 100; object obj = val; Console.WriteLine (“对象的值
2015-08-18 15:13:31 360
转载 RTP RTSP RTCP的区别
用一句简单的话总结:RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步。RTPReal-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push t
2015-08-05 09:03:49 796
基于ncnn的yolov8目标检测demo
2024-04-11
基于龙蜥(AnolisOS7.9)编译好的ZLMediaKit可执行文件
2023-12-13
基于c语言的玫瑰花代码
2023-09-25
java一机一密实现代码
2023-09-25
一种基于递归的搜索策略的旅行商问题回溯法
2023-08-08
torch-1.13.0a0+d0d6b1f2.nv22.10-cp38-cp38-linux-aarch64.whl
2023-08-04
ZED-SDK-Ubuntu22-cuda11.8-v4.0.5.zstd.run
2023-08-04
基于windows11编译nvidia的VideoProcessingFramework库
2023-08-01
基于yolov8的目标检测、实例分割、人体姿态跟踪检测
2023-07-18
Base64ToHexString.exe
2019-10-29
RTSP Directshow filter
2014-09-02
12306火车票订票助手V1.0
2012-09-19
12306订票助手火车侠
2012-09-19
shell编程实例Bourne Shell及shell编程
2011-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人