- 博客(120)
- 收藏
- 关注
原创 C#/WinForm 基于ffmpeg视频流转GIF
源码:https://gitee.com/feng-cai/screenshot-recording。
2024-10-30 23:51:37 244
原创 C#/WinForm 基于ffmpeg视频录制
git地址:https://gitee.com/feng-cai/screenshot-recording。录制的视频、截图都在根目录下。具体实现代码见源码。
2024-10-30 22:00:13 289
原创 C#/WinForm 鼠标穿透自定义区域截图(后续实现录屏)
git地址:https://gitee.com/feng-cai/screenshot-recording。
2024-10-30 14:03:07 311
原创 C# 图像镜像
simd指令解释:垂直镜像直接交换两个向量的元素即可,但是水平镜像不行,在交换位置前需要对向量内部元素进行位置颠倒,Avx2.Shuffle对32位向量低位和高位分开进行颠倒,所以我们需要使用Avx2.Permute2x128指令颠倒低位和高位。图像镜像是图像旋转变换的一种特殊情况,通常包括垂直方向和水平方向的镜像。水平镜像通常是以原图像的垂直中轴为中心,将图像分为左右两部分进行堆成变换。垂直镜像通常是以原图像的水平中轴线为中心,将图像划分为上下两部分进行堆成变换的过程。耗时3ms,性能再次提升!
2024-10-09 09:55:19 543
原创 C# 图像平移
图像平移:图像的平移是将一幅图像上的所有点都按照给定的偏移量在水平方向沿x轴、在垂直方向上沿y轴移动,平移后的图像与原图像大小相同。上面代码种tempArray数组用Array.Fill方法初始化默认值,因为图像背景为黑色,为了方便区分,设置为白色,以就是:Array.Fill(tempArray, byte.MaxValue);本次实验图像用的时500w像素的图像(2592×1944),且深度为8。接下来我们做算法优化,优化方向:减少重复计算和边界处理。优化非常有效,性能嘎嘎猛!
2024-10-08 16:49:57 339
原创 C# 利用simd比较两个文件是否相等(高性能)
Avx2.MoveMask如果Vector256向量全为为非0且所有元素相等,返回-1,全为0返回0,其它返回其它整数。Avx2.CompareEqual,比较两个Vector256向量,如果元素相同返回255,否则返回0。主要用到两个指令集,CompareEqual指令与MoveMask指令,因为电脑cpu原因,我们采用Avx2。测试:1GB的两个文件对比只需要1ms。
2024-09-26 22:00:16 297
原创 退火吗?C#/WinForm演示退火算法
算法开始时,初始温度设置得较高,允许算法在大范围内随机搜索解空间,以跳出局部最优解。随着温度逐渐降低,搜索过程变得越来越局部化,最终在低温下稳定在某个解附近,这个解通常是全局最优解或近似全局最优解。退火过程:假设定义域内随机点x0,相当于一个粒子,它会进行无序运动,也就是向左或者向右移动,移动幅度与和当前温度T有关,温度T越大,移动幅度越大,温度T越小,移动幅度就越小。如上图,起始点x0,那么x=x0,下一个随机点是x1,如果求最大值,fx1>fx0,此时需要更新状态,x=x1,y=fx1。
2024-09-04 09:54:48 550
原创 C# 不一样的洗牌算法---Simd指令
Shuffle指令:用于根据提供的控制值(control)重新排列 Vector128 类型向量中的元素。(比如洗牌算法打乱数组中元素的位置)。Store指令:将向量的数据存储到内存地址。洗牌算法,以随机打乱数组中元素的位置。普通打乱数组元素位置。
2024-08-15 15:27:58 342
原创 C# simd指令之MaskMove
掩码中的每个元素(sbyte)将决定相应位置的元素是否被写入内存。如果掩码中的元素为非零值,则对应的元素将被写入;如果为零,则不写入。该方法将掩码向量中的每个非零元素对应的源向量中的元素移动到内存地址指定的位置。如果掩码中的元素为零,则对应的内存位置不会被修改。将source向量中的元素全部移到tmpData数组中,这样我们将向量拷贝到数组中的时候就可以用到了。如果需要source指定位置的元素不移动,只需要在mask 指定位置的元素设置为0。也可以把向量复制移动到另外的向量,我们就可以实现向量深拷贝。
2024-08-14 20:23:43 395
原创 Winform 连续单击触发双击事件
通过上面user32中的SetDoubleClickTime方法,设置就行,比如200。Winform 连续单击触发双击事件,如何减小双击时间的判断间隔。
2024-06-25 16:35:45 169
原创 C# 使用Vector256写了一个简单的帮助类Vector256Helper
当数据量大的时候用普通代码计算非常耗时,这里简单利用simd加速处理。
2024-06-21 17:15:27 440 1
原创 C# 数字字符串排序
例如:string[] strings = { "D10", "D2", "D1","D0", "D3", "D9" };升序后:strings = { "D0", "D1", "D2","D3", "D9", "D10" };使用:Array.Sort(strings, new SemiNumericComparer());以上两个方法都可以实现数字字符串排序,如果数据量大推荐方法二。方法二:自定义比较器。
2024-05-28 16:33:20 692
原创 GDI+编程(1)---文字阴影
上面代码中,depth为投射深度,shadowColor为阴影颜色,faceColor为字体颜色,connect用于模拟体居光效果。
2024-03-26 10:27:05 317
原创 C# 命名管道NamedPipeServerStream使用
是 .NET Framework 和 .NET Core 中提供的一个类,用于创建和操作命名管道的服务器端。命名管道是一种在同一台计算机上或不同计算机之间进行进程间通信的机制。命名管道允许两个或多个进程通过共享的管道进行通信。其中一个进程充当服务器,创建管道并等待客户端连接。其他进程充当客户端,连接到服务器创建的管道,并通过管道进行数据交换。类提供了创建命名管道服务器端的功能。它允许你指定管道的名称、方向(输入、输出或双向)和一些其他选项。类连接到该管道,并进行数据交换。
2024-01-26 13:24:11 1330
Winform基于FlaUI实现微信自动化
2024-01-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人