自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 WPF基础-DataGrid

WPF基础DataGrid(VS2015+Win10)在WPF中,主要使用DataGrid控件进行表格化数据的展示,控件提供一个用户界面,用于 ADO.NET 数据集(ADO.NET是微软的一个组件库,作为数据访问接口使用,详细内容直接参考百科ADO.NET),并显示表格数据和启用数据源更新。DataGrid 控件设置为有效数据源时,则自动填充该控件,同时根据数据的形状创建列和行。 DataGrid 控件可用于显示单个表或显示一组表之间的分层关系,本篇就简单介绍下DataGrid的常见用法。1.使用Da

2021-03-09 19:31:16 20612 2

原创 C#操作Mysql(VS2015+Win10)

C#操作Mysql(VS2015+Win10)Mysql是常用的关系型数据库,Windows下Mysql的安装方法参考:Windows下MYSQL的安装!(添加my.ini文件后,要重启mysql服务才能使my.ini生效)Windows下Mysql的终端使用方法参考:Mysql数据库命令大全!C#操作Mysql示例C#对数据库的操作主要依赖于动态链接库MySql.Data.dll,我们先在程序包管理器控制台使用NuGet下载> Install-Package MySql.Data指定版

2021-03-09 09:58:48 368 1

转载 WPF后台线程刷新UI

后台线程刷新前台界面本篇介绍利用Dispatcher实现从一个非 UI 线程中更新一个由UI线程创建的对象1.Dispatcher简介微软在WPF中引入了Dispatcher,它是用于管理线程工作项队列,类似于Win32中的消息队列,所有WPF应用程序启动时都会加载两个重要的线程:一个用于呈现用户界面,另一个用于管理用户界面。呈现线程是一个在后台运行的隐藏线程,通常我们面对的线程是UI线程。WPF要求将其大多数对象与UI线程进行关联,意味着要使用一个WPF对象,只能在创建它的线程上使用,在其它线程上使

2021-02-22 14:53:39 1626

原创 WPF快捷键

快捷键快捷键不是每一个软件都需要,但是好的快捷键会让我们的使用更加便捷。通常我们使用Crtl+S来执行保存,CRTL+Z执行后退一步。下面我们就来介绍下快捷键的实现方法。1. 前台页面实现第一步,在xaml中添加快捷键资源<Window ...> <Window.Resources> <RoutedUICommand x:Key="ShortCutSave"/> </Window.Resources></Window>

2021-02-10 09:45:53 1252

原创 WPF弹窗

实现弹窗弹窗和前面实现的登录跳转的功能类似,都是定义一个窗口类,在其它窗口的函数中实例化使用。区别在于,登录跳转实例化新的窗体后,登录的窗体就丢弃了,保留新建的窗体;而弹窗则是一个临时性窗体,完成当前的工作后就丢弃了,原有窗体保留。第一步,新建wpf窗口,命名为LabelPopupWindow.xaml[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6QP0YeJ-1612920616680)(F:\chenggeng\Blog\Image\wpf基础开发img3.pn

2021-02-10 09:36:17 3174

原创 WPF图像标注

图像标注代码示例我们在PageLight页面上实现该功能第一步,PageLight.xaml添加以下代码<Page x:Class="wpfbase.PageLight" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.

2021-02-10 09:28:35 1667 3

原创 WPF图像上画线

图上显示跟随鼠标的十字交叉线我们在PageLight页面上实现该功能第一步,PageLight.xaml添加以下代码<Page ...> <Grid> ... <Grid Name="workspace" Grid.Row="2" Grid.Column="1" Background="Black" MouseLeftButtonDown="ImgMouseLeftButtonDown" MouseLeftBu

2021-02-09 15:56:32 2483

原创 WPF图像平移缩放

图像比例关系及缩放规则<Image Name="image" Source="F:\chenggeng\source\Image\Desert.jpg" Width="Auto" Height="Auto" RenderTransform="{StaticResource Imageview}" Stretch="Uniform" RenderOptions.BitmapScalingMode="NearestNeighbor"/>当Stretch="U

2021-02-08 11:04:37 1581 6

原创 WPF模板样式

模板样式设置(资源设置)应用方式:在xaml中编写资源xaml:<Page ...> <Page.Resources> <Style TargetType="Button" x:Key="FileButtonStyle"> <Style.Setters> <Setter Property="FontFamily" Value="Times New Roman" /> <Setter

2021-02-07 11:16:31 203

原创 WPF动态更新ListBox

ListBox的用法及实时更新动态的向Listbox中添加子元素,例如通过文件选择导入图片,并向ListBox中添加按钮前台PageMes.xaml文件中添加一个ListBox。内容如下:<Page ... Title="PageMes"> <Grid> ... <ListBox Name="files" ItemsSource="{Binding Files}" BorderThickness="0"

2021-02-06 11:17:21 2316

原创 WPF数据绑定

前台绑定后台数据,实时更新新建一个前台xaml文件(这里已前几篇新建的PageMes页面为例),我们在前台添加一个文本框控件,现在要实现的是将前台TextBox的内容与后台变量进行绑定,当后台数据更新时,前台页面的内容显示也实时更新。1.第一步,前台PageMes.xaml文件中添加一个TextBox,内容如下:... <Button Content="导入文件" Click="ImportFile" BorderThickness="0" /> <TextBox Name=

2021-02-05 11:11:02 280

原创 WPF文件选择

WPF文件选择1.选择文件的后台代码:2.选择文件夹1.选择文件的后台代码:在wpf框架中使用文件框选择文件比较容易实现,可以直接使用Microsoft.Win32.OpenFIleDialog类,后台代码如下:// 实例化一个文件选择对象Microsoft.Win32.OpenFileDialog dialog = new Microsoft.Win32.OpenFileDialog();dialog.DefaultExt = ".png"; // 设置默认类型// 设置可选格式dialo

2021-02-04 15:17:03 3466

原创 WPF滚动条

WPF设置自动滚动条WPF中的滚动条控件是ScrollViewer,下面我们基于前一篇的页面,示例为文本框添加滚动条。为TextBox设置自动滚动条我们在创建的PageHelp页面类中添加如下代码:<Page ...> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="25"/> <

2021-02-02 09:55:38 6128

原创 WPF页面

WPF实现窗口内页面跳转利用WPF中的Frame控件和Page类实现窗口内的页面跳转。下面我们基于上一篇介绍的菜单栏实现窗口内的页面跳转。步骤第一步,基于原有菜单栏的xaml代码,在MainWindow.xaml中添加Frame控件<Window ...> <Grid> ... <Frame x:Name="mainframe" Grid.Row="1" NavigationUIVisibility="Hidden"></Fram

2021-02-01 17:35:14 1130

原创 WPF菜单栏

WPF设置菜单栏WPF中有已经写好的菜单栏控件Menu,我们直接在XAML上添加Menu控件就能够实现菜单栏!1. 只包含一级菜单的Menu控件xaml代码如下所示,通过在Menu控件中添加MenuItem就可以为菜单栏控件添加一级菜单。下面代码中添加了6个菜单控件,Header属性对应的是菜单栏中以及菜单显示的名称;Click代表菜单的点击事件,当菜单被点击时,执行其对应的Click事件,Click属性对应的值即为后台响应函数的函数名。<Window ...> <Grid&g

2021-02-01 15:00:30 3998

原创 WPF登录跳转

WPF登录跳转新建一个登录窗口,实现登录跳转新建一个登录窗口,实现登录跳转第一步:新建wpf窗口,命名为LoginWindow第二步:按如下方式修改LoginWindow.xaml,设计登录窗体<Window x:Class="wpfbase.LoginWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microso

2021-01-07 20:33:32 5262

原创 WPF新建工程

WPF新建工程1. 新建WPF窗体应用程序新建工程,选择WPF应用程序,下方输入工程名称,选择工程位置工程新建成功后如下图所示:2. 常用文件格式说明xaml文件是WPF程序的窗体文件,通常我们在xaml文件中设计我们的窗体,其对应的cs文件是窗体的后台逻辑。工程新建成功后,系统会自动生成几个文件,这里详细解释一下App.xaml,App.xaml.cs,MainWindow.xaml文件和MainWindow.xaml.cs文件。App.xaml文件:<Application x:

2021-01-07 20:21:13 293

原创 VS2019下Opencv配置

VS2019下Opencv配置环境配置步骤环境win10 x64vs2019opencv412配置步骤1. 创建控制台应用创建新项目->控制台应用->选择路径命名项目2. 使用属性管理器管理属性第一步,打开视图的属性管理器第二步,在右侧属性管理器中找到debug|x64,右键添加新项目属性表,修改属性表名称及位置,点击添加。此时属性管理器中多了一个我们刚才添加的属性表第三步,双击打开刚刚新建的属性表设置包含目录:点击C/C++目录常规选项下的附加包含目

2020-12-16 16:41:57 334

原创 C++利用zxing识别二维码

C++利用zxing识别二维码下载编译配置使用Win10-x64+VS2015/VS2019下载编译1.下载zxing包,并解压,下载地址:https://github.com/glassechidna/zxing-cppbuild文件夹是后面建立的2.新建build文件夹,打开cmd命令框,进入build路径下,执行命令(Cmake已经安装):32位系统下执行:> cmake -G "Visual Studio 14" ..64位系统下执行:> cmake -G "Vis

2020-11-26 10:41:56 10005 6

原创 C++利用spdlog生成日志

C++利用spdlog生成日志下载编译spdlog配置并使用环境:Win10-x64+VS2015spdlog是一个快速的C++日志库,能够兼容C++11,具备快速、无需依赖第三方库、支持多线程、多平台的优良特性!下载编译spdlog1.第一步,下载spdlog下载spdlog,下载地址:https://github.com/gabime/spdlog#header-only-version,从Github上下载zip压缩包。下载完成后会获取一个名为spdlog-1.x.zip的压缩包2.第二步

2020-11-25 09:15:39 2615 3

原创 C++利用Zbar识别二维码

Zbar库安装+使用Win10+VS2015下载安装Zbar第一步:下载zbar,下载地址:http://zbar.sourceforge.net/download.html下载的文件名为zbar-0.10-setup.exe!官网的下载总是向蜗牛一样缓慢(革命尚未成功,同志仍需努力)。这里提供一个下载地址:http://u.163.com/nnnnnnZRw 提取码: Mjm4xI7s第二步:双击zbar-0.10-setup.exe安装注意勾选Development Headers an

2020-11-20 20:09:01 5386 3

原创 C++文件说明及使用方法

C++文件说明及使用方法库文件VS2015中导入文件说明C++/C程序编译的过程可以粗分为两个阶段:编译和链接;编译又可以分为 预处理、编译、汇编三个阶段在编写编译C++的过程中有很多种文件,例如源文件,头文件,静态库文件,动态库文件等。每种类型的文件都有其存在的意义库文件库是一些函数和类的集合,其实现了某些特定的功能,是程序的开发免于从头开始。库有两种:静态链接库和动态链接库!在windows下静态链接库为.lib,动态链接库为.dll;Linux下静态链接库为.a,动态链接库为.so。这里我

2020-11-19 19:32:33 1639 1

原创 C++使用TinyXML解析XML

C++解析XML简介TinyXML包含的对象及方法使用步骤C++解析XML(Win10-x64+VS2015)简介​ 使用开源库TinyXML解析XML文件,TinyXML能够在windows或linux中编译,使用TinyXML只需要将其中的6个文件拷贝到项目中就可以直接使用了,这六个文件是:tinyxml.h、tinystr.h、tinyxml.cpp、tinystr.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp。TinyXML包含的对象及方法1.

2020-11-18 15:26:37 1029 1

原创 C++利用opencv进行OCR Win10-x64+VS2015

C++利用opencv进行OCR Win10-x64+VS2015原理OCR的应用非常广泛,在工业上,常常用于印刷体的识别,例如印刷数字的识别。对于这种问题,我们的做法是先去采集工业场景下大批量的图像数据,分割为单个字体区域,绑定对应的标签,制作印刷字体的训练集。再使用机器学习或者神经网络对数据集进行训练,在得到一个准确率高的模型后,再使用模型去分类待测的字体区域图片。步骤制作数据集简单演示,这里我直接用word文档输入数字截图作为我采集的图像如下为train.pngtest.png第一

2020-11-14 17:06:09 1707 6

原创 Halcon OCR识别

Halcon OCR识别​ OCR(Optical Character Recognition),光学字符识别的英文缩写。OCR主要步骤图像预处理目标区域分割(ROI)字符识别结果处理1. 图像预处理​ 对原始图像进行灰度化,二值化,模板匹配,降噪,增强等!2.目标区域分割(ROI)​ 对预处理后的图像进行ROI提取,分割出单个字符组成的区域3.字符识别,即模式识别技术训练OCR,利用大量的模板图片训练出一个字符分类器使用OCR,将

2020-11-13 19:48:00 1456

原创 Wind10下安装CMake

CMake安装1. 第一步, 下载Cmake的安装包进入cmake的官网:https://cmake.org/download/下载系统支持的版本:以3.18.4为例2. 第二步,双击运行cmake-3.18.0-rc3-win64-x64.msi安装过程中有两步可以修改:1.由于后面需要直接使用Cmake,所以安装时就将Cmake添加进入系统路径。2. 修改Cmake的安装路径3. 第三步,打开cmd命令行,查看安装版本,确认安装成功...

2020-11-13 11:04:19 213

原创 python状态模式-小试牛刀

Python状态模式状态模式举例说明Code(Python)状态模式什么是状态模式,所谓状态模式是指对象在不同的状态下有不同的行为,这种不同的行为就好像是不同的类一样.举例说明在一个公司中,每个人都有自己的岗位和职责,假如我们实例化了两个人小白和小黄,都是公司的员工,结果天掉馅饼,小白被公司晋升为了经理,那小白的工作职能就改变了.这里就可以用状态模式来实现,当小白的身份状态变化时,其对应的行为方法也将改变!Code(Python)#encoding=utf-8"""状态模式小例程"""#

2020-07-09 14:24:38 225

原创 VS2015基础开发流程

Helloworld步骤1 新建项目步骤2 新建文件步骤3 编写代码步骤4 调试步骤5 (重新)生成解决方案步骤6 运行步骤1 新建项目打开VS2015点击“文件”->“新建”->“项目”->“win32控制台应用程序”(选择Visual C++). 并设置项目名称和路径!在弹出的向导框中选择下一步,点击空项目。第2和第3可以合并,直接新建空项目即可。步骤2 新建文件在右边的“解决方案管理器”选择“源文件”,右键选择"添加“->”新建项"如果右侧找不到解决

2020-06-07 14:43:03 818

原创 C++ #if #ifdef #if 0

#if #ifdef #if 0#ifdef#if 常量注释用法#ifdefa. #ifdef#ifdef _XXXX...程序段1...#else...程序段2...#endif如果标识符_XXXX已经被#define定义,则编译程序段1,否则编译程序段2.#else非必须,可不存在程序段2.b. #ifndef#ifndef _XXXX...程序段1...#else...程序段2...#endif与#ifdef相反,即#if not define.如果标识符_XXXX没

2020-06-05 09:58:50 1699

原创 Leetcode No. 12 整数转罗马数字

Leetcode No. 12 整数转罗马数字ProblemSolvingCode(c++)Problem罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D ...

2020-03-23 23:25:50 111

原创 Leetcode No. 11 盛最多水的容器

Leetcode No. 11 盛最多水的容器ProblemSolvingCode(c++)Problem给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 ...

2020-03-23 21:24:51 121

原创 Leetcode No. 8 字符串转换整数 (atoi)

Leetcode No. 8 字符串转换整数atoiProblemSolvingCode(c++)Problem请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将...

2020-03-23 11:34:10 75

原创 Leetcode No. 6 Z 字形变换

Leetcode No. 6 Z 字形变换ProblemSolvingCode(c++)Problem将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个...

2020-03-22 11:43:08 102

原创 Leetcode No. 5 最长回文子串

Leetcode No. 5 最长回文子串ProblemSolvingCode(c++)Problem给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”Solving中心移位法以0.5作为一个步长,让中心...

2020-03-21 15:37:24 111

原创 Leetcode No. 53 最大子序和

Leetcode No. 53 最大子序和ProblemSolvingCode(c++)Problem给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,...

2020-03-20 14:42:04 63

原创 Leetcode No. 35 搜索插入位置

Leetcode No. 35 搜索插入位置ProblemSolvingCode(c++)Problem给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1...

2020-03-18 21:32:16 63

原创 Leetcode No. 28.实现 strSt

Leetcode No. 28.实现 strStrProblemSolvingCode(c++)Problem实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle...

2020-03-17 09:41:46 148

原创 Leetcode No. 27 移除元素

Leetcode No. 27 移除元素ProblemSolvingCode(c++)Problem给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3...

2020-03-16 11:58:34 76

原创 Leetcode No. 26 删除排序数组中的重复项

Leetcode No. 26 删除排序数组中的重复项ProblemSolvingCode(c++)Problem给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例输入输出附加要求[1,1,2]2原数组 nums ...

2020-03-16 11:16:44 99

原创 Leetcode No. 21 合并两个有序链表

Leetcode No. 21 合并两个有序链表ProblemSolvingCode(c++)Problem将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4Solving我们可以采用一个死循环的方式,从头开...

2020-03-15 13:35:45 79

空空如也

空空如也

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

TA关注的人

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