自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 资源 (34)
  • 论坛 (3)
  • 收藏
  • 关注

原创 ASP.NET Core API标准项目开发流程

一、基本准则1.1HTTP方法使用以下HTTP方法:方法名称 主作用 次作用 GET 获取资源 增删改查以外的动作,内容在URL中 POST 创建资源 增删改查以外的动作,内容在BODY中 PUT 更新资源 DELETE 删除资源 1.2RESTURI设计准则1、使用名词的复数表示一个资源集合,如:www.example.com/users2、使用斜线“/”表示资源之间的层次关系,如www.ex...

2020-12-24 09:43:16 49

原创 ASP.NET Core实现OpenID Connect用户认证、授权

在前面的文章中,我们讲述了ASP.NET实现OAuth2.0的四种模式。那在.NET Core中怎么实现呢?如果使用前面的方法,你会发现是行不通的,.NET Core的架构已经改变了。在讲述认证之前,我们需要先了解一个新的协议:OpenID Connect。它基于OAuth2.0协议,增加了OpenID这个概念,使用起来会更加简便。本文不对这个协议展开分析,有兴趣的读者请参阅其他资料。在ASP.NET Core中,我们使用IdentityServer4这个开源库实现用户认证和授权的功能。一、实现用户

2020-09-04 14:36:48 286

原创 ASP.NET Core中使用Mysql并自动生成实体类

一、添加NuGet包添加以下两个包:MySql.Data.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.Tools二、准备数据库创建数据库和表,假设数据库的连接字符串为:server=localhost;uid=root;pwd=password;port=3306;database=db_name;三、自动生成实体类1、在Visual Studio菜单中选择:工具 > NuGet包管理器 >程序包管理...

2020-09-02 18:14:04 242

原创 在Vue中使用ThreeCSG(对3D模型网络合并)

ThreeCSG的Github地址:https://github.com/chandlerprall/ThreeCSG1、下载之后,可以看到里面有一个threeCSG.es6文件,把它放到项目中。2、打开threeCSG.es6文件,在首行加入对three.js的引用:import * as THREE from "three";3、在项目中引用ThreeCSG和Three.js:import * as THREE from "three";import ThreeBSP from

2020-08-28 11:09:33 182 1

原创 SQL训练题(附答案及详细讲解)

一、表结构所有题目都基于以下表,请先创建并熟悉:学生表studentCREATE TABLE student(sid VARCHAR(10),sname VARCHAR(10),sage DATETIME,sgender VARCHAR(10));INSERT INTO student VALUES('01' , '赵雷' , '1990-01-01' , '男');INSERT INTO student VALUES('02' , '钱电' , '1990-12-21' , '男');

2020-08-05 15:56:27 196

原创 详解.NET实现OAuth2.0四种模式(6)RefreshToken

我们知道,为了安全起见,AccessToken的有效时间一般是比较短的(如30分钟)。在AccessToken超出有效期之后,它就不能再用于访问资源,必须重新获得。但如果每30分钟,就要让用户登录一次,那必定会让用户感到厌烦。于是就产生了RefreshToken这个概念。在获得AccessToken的同时,得到RefreshToken。在AccessToken过期之后,不需要请求用户重新输入账号,直接用RefreshToken获得新的AccessToken。下面,我们在授权码模式下,加入Refres

2020-07-20 16:05:27 176

原创 详解.NET实现OAuth2.0四种模式(5)简化模式

简化模式又称为隐式授权码模式,它是授权码模式的一个简化版本。具体来说,在简化模式中,授权服务器不返回授权码,而直接返回AccessToken。这种模式一般用在无法安全保存AppSecret等信息的应用中,如HTML/JS应用(所有代码都在明文中)。授权码原先设计的目的是验证应用是合法的,但既然应用没办法证明自己,就没有必要多一步请求了。我们直接来看简化模式的实现。Startup类跟授权码模式是一致的,我们不再赘述。...

2020-07-20 15:26:31 191

原创 详解.NET实现OAuth2.0四种模式(4)授权码模式

一、授权码模式认证流程授权码模式是最为安全,同时也最为复杂的一种模式。其认证流程如下图所示:可能有的人会问,为什么要多出授权码这个东西呢,没有它不行吗?(我自己一开始也有这个疑问)确实是不行,我们来看一下。我们拿“同城交友”APP微信登录这个例子来解释。首先,用户名、密码就是我们的微信号和密码,我们是不能交给“同城交友”这个APP的。所以,我们在微信官方的登录页上完成了微信号和密码的输入(当然,也可能是手机扫一扫)。完成之后,我们能不能直接把AccessToken交给APP去访问资源呢?还不

2020-07-20 14:50:27 276

原创 详解.NET实现OAuth2.0四种模式(3)客户端模式

一、客户端模式的认证流程客户端模式也是一种比较简单的模式,其跟密码模式类似,只是不用用户名和密码去认证,而使用AppID、AppSecret认证。在客户端模式下,认证的主体是应用,而非用户。二、客户端模式的实现客户端模式的实现过程跟密码模式基本是一致的,相同的部分不再赘述,所以还没了解密码模式的读者请先阅读上一章。我们在上一章中,创建了一个简单的Controller作为资源示例,创建了一个Startup类,作为网站入口。这些内容在客户端模式下都是完全相同的。唯一有区别的是Authoriz

2020-07-20 10:16:18 159

原创 详解.NET实现OAuth2.0四种模式(2)密码模式

一、密码模式的认证流程密码模式是比较简单的一种模式,其认证流程如下图所示:二、受限资源设计OAuth2.0设计的目的是限制某些资源的访问,用户必须认证通过之后才能访问。我们在项目中加入一个简单的Controller,作为资源示例。右击项目,添加一个Web API控制器类(v2.1),如下图所示:我们把这个类命名为ValuesController,在这个类中只添加一个函数:public IHttpActionResult Get(){ return Ok(new s

2020-07-20 09:06:43 197

原创 详解.NET实现OAuth2.0四种模式(1)

一、OAuth2.0的角色在OAuth2.0协议中,有4个角色,分别是:用户:访问受限制资源的用户。应用:第三方应用,可能是手机App、Web应用或者桌面程序。授权服务器:负责用户授权、颁发令牌、管理应用等。资源服务器:存放受限制资源。授权服务器和资源服务可以是同一个服务器。举个例子,我们在“同城交友”这款应用中,需要微信登录并使用微信头像,那么,用户就是我们,应用是“同城交友”,授权服务器就是微信登录授权的服务器,而资源服务器存放了我们微信的头像。二、一般流程使用O

2020-07-17 19:54:09 259

原创 C#基于任务的异步模式开发教程

任务一般是一些比较耗时的操作(IO或者复杂计算),如果在主线程运行,将影响程序的流畅性。所以,我们一般会新建线程处理任务。.NET4开始引进了Task,它对Thread做了大量方便易用的封装。我们将详细讲述Task的使用方法,以及各种多线程的使用场合。一、任务设计1.1基本设计一个简单的耗时操作如下所示:void Func1(){ Thread.Sleep(1000);}如果有返回值,将如下所示:int Func2(){ Thread.Sleep(1500.

2020-07-01 17:44:36 166

原创 跨平台SCADA系统(组态软件)开发6

六、服务端实现本章所说的服务端,是“仪器-工控机-服务器-客户端”架构中的服务端,并不实现采集功能(采集功能已在前面的章节讲述)。我们要实现的服务端是有高实时性的,当数据发生改变时,迅速地推送给客户端。同时,客户端上的反控操作,能快速地反映到仪器上。MQTT是实现此类服务端较好的技术选择。以“设备名.因子名”为主题,当采集到变化的数据时,发布相应主题。客户端根据当前显示需要,订阅相关的主题。同时,工控机订阅一个专门的反控主题,任何客户端的反控操作都发布该主题。...

2020-06-03 15:37:06 717

原创 跨平台SCADA系统(组态软件)开发5

五、组态功能开发事实上,整个组态功能就是在Web上开发的,而桌面软件上显示的组态界面,其实是加载浏览器内核完成的。浏览器下的组态图编辑界面:

2020-06-01 17:49:05 721 1

原创 跨平台SCADA系统(组态软件)开发4

四、数据采集采集功能是整个系统最核心的功能,完成了这一功能,其他部分便水到渠成。数据采集的需求包括:(1)仪器各种各样,通信协议五花八门。(2)软件开发完成以后,能够让不懂代码的人配置最终产品。(3)使用多种链路,有些仪器共用一条链路。(4)快速采集,有些链路或仪器出现问题不影响整个系统的采集。(5)在采集的同时,反控能及时响应。上述五个需求,我们在不同的模块中完成,每个模块只要做好自己的事情即可。4.1设备配置和通信协议这一部分完成的是需求1和2。...

2020-06-01 14:48:45 637

原创 跨平台SCADA系统(组态软件)开发3

三、模块化开发我们在第一章中提到,SCADA系统可能应用于不同的部署框架中,包括“仪器-工控机”、“仪器-工控机-服务器-客户端”和“仪器-服务器-客户端”。为了应对这种情况,有两种开发模式:1、开发一个大的系统,然后通过配置项启用或禁用某些部分的代码。2、设计好接口,每个模块独立开发,最后产品像搭积木一样拼装每个模块发布。本系统使用第二种开发模式。四、采集模块...

2020-06-01 11:43:03 782

原创 跨平台SCADA系统(组态软件)开发2

二、数据模型整个SCADA系统,其功能其实是对数据流动的控制,如下图所示:(1)采集模块是系统的入口,所有数据来自采集模块。(2)采集到的数据是实时变化的,而数据库可能要求1分钟或1小时存放一条数据,这时候需要对数据进行采样。(3)原始数据或许只是数字,而我们在展现时,会要求显示单位、保留一定的小数位数,又或者,什么数字代表什么状态,这就要求对数据进行一定的格式化。(4)数据经过整理之后,按照一定的通信协议上传至服务器。那作为系统核心的数据,究竟以怎样的格式进行存放呢?上.

2020-06-01 09:22:14 744

原创 跨平台SCADA系统(组态软件)开发1

一、系统概述我在上年做了一些工控软件开发的介绍(可参考我之前发过的博文),解决了两个主要问题:1、无需修改代码,简单配置,即可支持几十上百种不同通讯协议的仪器。2、开发了类似组态软件的功能,像画图软件一样编辑一个流程图,图像元素能够根据仪器数据和状态进行实时变化。当然还有其他解决的问题,但比较突出的是上面两点。(组态)(设备配置)(设备面板)(数据图表)今年接触到几位同行的朋友,他们提出了能不能提供在Web上运行的组态图的想法。确实,Web早已大行其.

2020-05-30 07:47:14 1469 1

原创 基于OpenCvSharp的数字图像处理 - 轮廓

我们在前面的章节里讲过边缘检测,本章所说的轮廓是基于边缘检测的。我们之前所做的边缘检测,结果只是基于像素的,而很多时候,我们可能需要对轮廓进行一些几何操作,例如分析区域是否连通,求出轮廓的凸包,判断一个点是不是在轮廓内,等等。我们先来看两种生成轮廓的方法,再看对轮廓的一些应用。一、从边缘得到轮廓虽然轮廓似乎就是边缘,但实际上,OpenCV只能从二值图得到轮廓,边缘被看成是非常窄的区域(宽1个像素)。所以,从边缘得到轮廓时,会出现两条轮廓基本相同,它们是边缘的内外。示例代码如下:Mat sr

2020-05-11 15:41:24 633 1

原创 基于OpenCvSharp的数字图像处理 - 图像分割

图像分割是根据图像中各部分的特征,分割出不同的区域,这些区域可能代表了不同的物体。最简单的图像分割是区分出背景和前景。图像分割目前有一些比较成熟的技术,但想不通过一些辅助手段而达到比较好的分割效果,还是有一定难度的。一、漫水填充如果用过Photoshop的读者,应该对这项功能很熟悉。先设定一个阈值,然后在图像中的某个区域点一下鼠标,类似这个区域的像素都会被填充为某一颜色。这项功能需要我们指...

2020-05-06 16:37:39 881

原创 基于OpenCvSharp的数字图像处理 - 图像优化

在直方图一章里提到的直方图均衡化就是一种图像优化的方法。本章再介绍图像修复和去噪两种方法。一、图像修复这里所介绍的图像修复是很简单的,就是用周边区域的像素填充损坏区域。代码如下:Mat src = new Mat(img_lenna_bad);//找出损坏区域Mat mask = new Mat(src.Size(), MatType.CV_8UC1, new Scalar(0...

2020-04-27 10:30:51 671 3

原创 基于OpenCvSharp的数字图像处理 - 霍夫变换

霍夫变换最大的作用是检测图像中的直线。其原理是这样的:假设图像中有一条直线,其方程为y=kx+b。直线上有一个点,其坐标为(x1,y1)。显然,y1=kx1+b。如果我们把x、y看成是已知的,把k、b看成是未知数,有:b=-x1k+y1。我们发现,(x,y)坐标系上的一个点,对应了(k,b)坐标系上的一条直线。如果有另外一个点(x2,y2),则其必然对应(k,b)坐标系上的另一条直线。显然,(k,...

2020-04-27 09:16:41 402

原创 基于OpenCvSharp的数字图像处理 - 直方图

直方图是对图像灰度信息的一个统计结果,直方图的分布能够反映图像的某些特征,可用于图像匹配。一、直方图提取图像直方图的代码如下:Mat src = new Mat(img_lenna, ImreadModes.Grayscale);Mat hist = new Mat();Cv2.CalcHist(new Mat[] { src }, new int[] { 0 }, new Ma...

2020-04-26 20:18:40 458

原创 基于OpenCvSharp的数字图像处理 - 位置变换

平移、旋转、缩放、翻转、剪切等变换都属于仿射变换,而仿射变换又是透视变换的一种。所有仿射变换都可以用三个点到另外三个点去描述,而透视变换需要四个点。我们拍摄的图像里面,一般矩形的物体(例如纸张)都会变形,如果要转回规整的矩形,就要使用透视变换。在本教程中,使用的原图都是:一、翻转Mat src = new Mat(img_word);Mat map_x = new Mat...

2020-04-15 14:18:38 549

原创 基于OpenCvSharp的数字图像处理 - 形态学

一、腐蚀形态学的内部算法依然是卷积,跟中值滤波一样,非线性。中值滤波取核范围的中位数,而腐蚀取最小值,膨胀取最大值。腐蚀看起来的效果是亮的区域被侵蚀,可用于一些噪声的去除。Mat src = new Mat(img_region, ImreadModes.Grayscale);Mat result = new Mat();Mat element = Cv2.GetStructur...

2020-04-15 09:07:29 606

原创 基于OpenCvSharp的数字图像处理 - 二值化

一、二值化方法在OpenCvSharp,threshold函数专门用来对灰度图像进行二值化。给定一个阈值thresh,最大值maxval,函数在不同的二值化类型下,功能表现如下表所示:类型 >thresh <=thresh THRESH_BINARY maxval 0 THRESH_BINARY_INV 0 maxval THRE...

2020-04-14 16:24:08 1469

原创 基于OpenCvSharp的数字图像处理 - 锐化、边缘检测

一、Sobel算子Sobel算子是一阶导数的近似,分横向求导和纵向求导,其3阶算子为:实际运用时,我们可以把两次求导的结果按一定比例结合在一起。Mat src = new Mat(img_lenna, ImreadModes.Grayscale);Mat grad_x = new Mat();Mat grad_x2 = new Mat();Cv2.Sobel(src, g...

2020-04-14 15:20:03 1152 1

原创 基于OpenCvSharp的数字图像处理 - 模糊、平滑、去噪

这一章的模糊处理,以及下一章的锐化处理,其实绝大部分都是用一个核跟图像做卷积,使用的核不一样,效果就不一样。一、均值滤波均值滤波使用的核是全1核,再归一化。如五阶核:Mat src = new Mat(img_lenna, ImreadModes.Grayscale);Mat result = new Mat();Cv2.Blur(src, result, new OpenC...

2020-04-14 14:02:47 1469

原创 基于OpenCvSharp的数字图像处理 - 图像彩色类型转换

在计算机上存储的图像一般使用RGB彩色空间,但是在其他场合,我们可能需要其他的彩色空间。例如,在打印时,一般使用CMYK;在很多图像处理里,我们只需要用到图像的灰度信息,需要把图像转为灰度图;HSV空间是人眼更好理解的一个彩色空间,等等。一、转为灰度图Mat src = new Mat(img_lenna);Mat result = src.CvtColor(ColorConversi...

2020-04-14 10:44:06 860

原创 基于OpenCvSharp的数字图像处理 - 像素操作

在OpenCvSharp里面,图像一般使用Mat对象存储。Mat即矩阵,矩阵的每一项是一个MatType结构。MatType有CV_16SC4、CV_8UC3、CV_8UC1等,可以看到,类型皆由四部分组成,定义如下:8 U C 3 每通道的字节数 每通道的数据类型 固定为C,指Channel 通道数 例如,一般的无透明彩色图,每一格像素包含了RGB...

2020-04-14 10:34:59 827

原创 基于OpenCvSharp的数字图像处理 - 文件与显示

一、读写文件Mat src = new Mat(img_lenna);//默认是彩色图像//Mat src = new Mat(img_lenna, ImreadModes.Grayscale);//如果需要灰度图像src.SaveImage(img_result);二、显示图像在WPF项目里面,需要使用WriteableBitmap,直接作为Image的Source。在Ope...

2020-04-14 10:24:27 505

原创 基于OpenCvSharp的数字图像处理 - 创建项目

OpenCV是一个不错的数字图像处理库,但它原生的开发语言是C++。要在C#项目里使用,需要经过一些转换。OpenCvSharp是一个不错的封装,接口跟OpenCV保持得很好。本教程的示例项目使用Visual Studio 2019开发,是一个WPF项目。1、创建一个WPF项目,.NET Framework版本选择4.6.1。2、Nuget程序包添加OpenCvSharp相关库。...

2020-04-14 09:35:18 416

原创 Cordova/Vue/Framework7使用HTML开发APP

首先需要下载模板文件。在使用之前,我们需要先安装好node.js、cnpm、cordova、JDK8(注意一定是8)、Android SDK。安装scss:cnpm install node-sass --save-devcnpm install sass-loader --save-dev添加平台:cordova platform add browserc...

2020-03-02 19:55:05 119

原创 WPF 3D开发教程(四)

四、实战:展示一个圆柱体4.1圆柱体分解我们知道,3D模型是用三角形表示的,那一个圆该如何表示呢?其实用的就是割圆法,也就是用一个近似的多边形就表示一个圆。下图展示了10、20、50个顶点的正多边形,可以看出,正50边形看上去跟圆已经很接近了。我们的例子就是用正50边形。切分之后,圆柱体变成了如下所示的三棱体的组合:我们需要描述这个三棱体的三个面,共4个三角形(侧面是一个...

2020-01-19 15:24:57 797 1

原创 WPF 3D开发教程(三)

三、3D模型3D模型就是物体,是3D开发中的主角。我们在第一部分提过,使用三角网格法表示面。而三角形由顶点组成,每个面又有一定的材质,这些都是怎么表示的呢?三角形面由Positions和TriangleIndices两个属性确定,而材质的显示主要由TextureCoordinates和Material两个属性确定。我们具体解释一下这些属性。3.1Positions和TriangleInd...

2020-01-17 20:43:15 1042

原创 WPF 3D开发教程(二)

二、相机、光源2.1相机和投影我们一般会用到两种相机,PerspectiveCamera和OrthographicCamera。PerspectiveCamera:透视投影相机,更符合世界实际。OrthographicCamera:正投影相机,不会出现近大远小的效果。更常用的是PerspectiveCamera,所以我们主要介绍这种相机的属性。相机有三个重要属性,我们...

2020-01-17 17:04:36 889

原创 WPF 3D开发教程(一)

一、3D基础知识1.1坐标系我们知道,在2D平面绘图时,WPF使用的坐标系(其实计算机上的图形处理一般都是这样)是以屏幕左上角为原点,向右为x轴正方向,向下为y轴正方向。而WPF的3D坐标系,取区域中心为原点,向右为x轴正方向,向上为y轴正方向,z轴正方向垂直于屏幕指向我们。这是一个右手系,读者可以伸出自己的右手,做下图所示动作。拇指、食指、中指分别代表x、y、z轴。1....

2020-01-17 11:18:44 2462

原创 工控系统设计(八)组态功能开发

八、组态功能开发如果要做出一款通用、功能强大的组态软件,那需要的人力物力必定是巨大的。但如果实现组态软件最核心、最常用的功能,则不是一件困难的事情。组态功能,无非是一种数据的展示和控制方式。通过拖拉、配置等方式,尽可能不编程,制作出图形,此图形能够根据数据动态变化,也能够操控图形而达到控制设备,这就是最核心的组态功能。组态图由多张静态图片和动态图片(gif)拼接而成。这些图片有层级关系...

2019-12-03 10:42:21 1092 1

原创 工控系统设计(七)其他调度系统

七、其他调度系统7.1 上传数据调度系统数据上传跟数据采集是类似的,具体区别有两点:(1)上传设备较少,一般只有一个平台。(2)上传以主动推送为主,有定时性。由于上传数据一般需要查询历史记录,所以需要把记录存放在数据库中。上传函数定时执行,当检测到某种数据已经到了发送时间时,从数据库中提取相关数据,拼接出要上传的内容。把上传内容存放到数据库中,标记未上传。另外有一个独立线程...

2019-12-03 10:41:23 331

原创 工控系统设计(六)采集/反控调度系统设计

六、采集/反控调度系统设计在第一部分,我们提到了数据采集所面临的问题。稳定、并发、时延少、不串码,是调度系统需要解决的问题。串行读写是最稳定的一种读写方式。遍历设备,把每台设备需要采集的命令发送,得到回复之后,再转到下一台设备。这种方式的缺点是速度慢。如果设备数量大、因子多,某台设备的响应速度慢,那么一个采集循环的时间就会很长。另一种方式是每一个链路配一个线程,因为不同链路是可以并行读...

2019-12-03 10:39:28 409

云图(等高线图)绘制算法源码

介绍三种绘制云图或等高线图的算法。点距离反比插值、双线性插值和面距离反比+双线性插值。

2019-04-26

等高线图算法完整代码(C#)

使用C#对等高线图算法(Marching squares)的完整实现代码。

2019-06-12

WPF MVVM完整示例(登录窗口)

包含了在MVVM模式下的数据绑定、命令和事件、PasswordBox的绑定、RadioButton等一对多控件的绑定、关闭窗口和打开新窗口和数据验证等内容。

2019-03-29

WPF高性能绘图的方法

WPF高性能绘图的方法,使用WriteableBitmap对象,介绍使用GDI+绘制图形和操作像素的两种方法。

2019-05-06

工控机网络通信工具类

工控机网络通信工具类,包括跟平台连接、跟仪器连接。

2018-09-06

WPF报表控件(表格和图表)

用WPF做的报表控件,小巧但实用。能够自定义表头,导出Excel表格和打印。

2018-09-05

SZY206-2016水资源监测数据传输规约

网上特别难找的2016版水资源监测数据传输规约

2018-09-30

坐标轴刻度取值算法完整代码

坐标轴刻度取值算法完整代码,生成比较优雅和人性化的刻度。

2019-06-13

OpenCvSharp测试程序DEMO

OpenCvSharp是一个C#对OpenCV的封装。本测试程序是一个WPF项目,提供众多数字图像处理的示例代码,包括图像平滑、边缘检测、二值化、区域分割、滤波等。

2020-05-06

.NET Core WebSocket示例

ASP.NET Core Web应用程序,包含服务端和客户端的示例代码(js)。

2019-09-29

最小圆覆盖算法(C#)

C#实现的最小圆覆盖算法。给定一个点(x,y)的列表,返回圆心坐标和半径。

2019-07-09

C#编写的矩阵类,包含矩阵一般的操作

用C#写的矩阵类,包含矩阵的四则运算、叉乘、转置、行列式、逆矩阵、卷积等。

2019-06-06

C#实现4种经典迷宫生成算法和迷宫寻路算法

C#实现4种经典迷宫生成算法和迷宫寻路算法,4种经典的迷宫生成算法是:(1)使用并查集算法生成,(2)使用深度优先算法生成,(3)使用随机算法生成,(4)使用递归切割算法,而迷宫寻路使用A*算法。

2018-12-05

象棋五子棋AI源代码(C#)

象棋和五子棋的AI源代码,用C#写的,可运行。战力还可以。

2018-11-26

用HTML5写的五子棋游戏

比较简单地实现了五子棋游戏,两人轮流下,判断胜负。

2018-10-11

用HTML5写的俄罗斯方块游戏

用HTML5写的俄罗斯方块游戏,支持键盘上下左右移动和旋转。

2018-10-11

C#表达式运算类

能进行以下运算:四则运算、乘方开方、三角函数、逻辑运算。

2018-09-05

应用程序守护程序

监测需要保护的程序,保证程序在运行状态,如果程序退出,则会自动启动程序。有源代码。

2018-09-05

WPF带水印的输入框

WPF做的带有水印的TextBox。内容为空时出现浅灰色文字。有源代码。

2018-09-05

WPF日期时间控件

WPF日期时间控件,可选择日期和时间。日期时间格式自定义,用yyyy-MM-dd HH:mm:ss这样的字符串定义格式。有源代码。

2018-09-05

Visual C++编程的语音合成程序

使用Visaul C++编程,使用Speech SDK中的语音合成技术,有源代码

2009-01-03

Visual C++编写的屏幕捕抓程序

使用Visual C++编写,可以捕抓屏幕并保存到剪贴板,有源代码

2009-01-03

Visual C++编写的播放动画程序

使用Visual C++编写,有源代码,播放AVI动画

2009-01-03

Visual C++编写的CD播放器

使用Visual C++编写,有源代码,播放光驱中CD中的歌曲

2009-01-03

Visual C++编写的万年历

用Visual C++编写,有源代码,使用方便,可查询史后的所用日期。

2009-01-02

使用Visual C++编写的备忘录

可以设置每天提示自己一些事情,用Visual C++编写,有源代码。其中包含了一些时间的获取方法。

2009-01-02

基于Visual C++的黑白棋游戏源代码

基于Visual C++ MFC,有网络功能、人机对战功能,使用方便,较智能

2008-12-21

基于Visual C++的象棋游戏源代码

使用Visual C++ MFC编写,有源代码,使用方便,并且有网络功能,人机对战功能

2008-12-21

Visual C++与Matlab混合编程的语音识别

使用Visual C++与Matlab混合编程的语音识别程序,使用方便

2008-12-17

Visual C++编写的五子棋源代码

五子棋游戏,用Visual C++编写,有应用程序,可直接运行

2008-12-17

用于C++的数值方法类

包含了众多数值方法函数,使用方便,用C++语言编写

2008-12-17

用于C++的进制运算类

包含丰富的进制运算函数,使用方便,用于C++语言。

2008-12-17

用于C++的基础网络类

使用Visual C++写的,具有基本的网络操作功能,使用方便

2008-12-17

基本的图像处理源代码

一个基本的VisualC++2008图像处理源代码,可进行图像变换、图像模糊及锐化等

2008-10-26

软件升级程序编程

发表于 2010-05-07 最后回复 2013-01-24

IPropertyBag的Read函数如何用?

发表于 2010-04-27 最后回复 2010-04-27

急!!加载资源DLL,大部分资源没有问题,只有一个对话框有问题

发表于 2010-04-22 最后回复 2010-04-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除