C#
文章平均质量分 68
He BianGu
qq908293466
展开
-
示例:分享一个VS2019矢量图标库
一、目的:分享一个VS2019矢量图标库,可直接应用到WPF中二、示例:1、启动程序:2、点击查看代码3、可以将Drawing直接作为Background放入wpf中做显示,也可以引用资源库,直接设置staticsource静态资源设置背景三、下载地址https://github.com/HeBianGu/WPF-DrawingSource...原创 2021-01-01 19:36:55 · 1594 阅读 · 0 评论 -
封裝:WPF基于Vlc.DotNet.Wpf封装的视频播放器
一、目的应用自带的MediaElement播放器播放文件类型有限,有些格式还需要安装插件,由此应用第三方工具包Vlc.DotNet.Wpf封装支持多格式的视频播放器二、环境VS2019、Win10、Vlc.DotNet.Wpf、HeBianGu.General.WpfControlLib 2.1.4、HeBianGu.Base.WpfBase 2.1.4三、效果注意: var libDirectory = new DirectoryInfo(System.IO...原创 2020-07-13 11:17:22 · 2703 阅读 · 5 评论 -
记录:WPF 制作高性能的透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True)
https://blog.walterlv.com/post/wpf-transparent-window-without-allows-transparency.html转载 2020-05-26 17:16:21 · 1701 阅读 · 2 评论 -
整理:Task异常补货方法
1、应用ContineWith var task1 = Task.Run(() => { throw new Exception("task1 faulted."); }).ContinueWith( t => { Console.WriteLine("{0}: {1}", t.Exception.InnerException...原创 2020-05-26 11:22:47 · 466 阅读 · 0 评论 -
搭建:带有 Swagger/OpenAPI 的 ASP.NET Core Web API 帮助页
一、目的:记录搭建带有Swagger的WebApi过程二、环境:1、VS20192、.NetCore3.0三、效果四、过程1、添加包:Swashbuckle.AspNetCore 选择最新预览版本:5.0.0-rc4 注意不选此版本会报错误2、添加包:Microsoft.OpenApi 1.1.43、public void ConfigureServices(I...原创 2019-12-25 16:36:47 · 482 阅读 · 0 评论 -
示例:WPF应用Behaviors封装的Zoom效果
一、目的:封装Zoom效果到Behavior中,方便实现鼠标滚轮定点放大缩小,鼠标拖动等效果二、实现1、鼠标滚轮定点放大缩小2、鼠标拖动平移3、恢复初始位置4、设置缩放是否应用在整个容器中5、设置居中对齐还是居左对齐6、通过行为直接加载三、示例四、实现过程1、如下定义Behavior /// <summary> Zoo...原创 2019-12-23 14:19:06 · 1525 阅读 · 0 评论 -
示例:WPF应用Behavior设置带有拖动和缓冲效果的ScrollView
一、目的:封装一个具有拖动效果和缓冲效果的ScrollView二、实现1、在ScrollView中通过鼠标拖动可以平移2、在ScrollView中滚动时具有缓冲效果3、封装在行为中直接附加三、示例四、实现过程1、创建拖动行为,如下 /// <summary> ScrollViewer带有鼠标拖动和触摸拖动效果 </summary>...原创 2019-12-23 14:01:30 · 986 阅读 · 0 评论 -
示例:WPF应用Behaviors封装的动画加载子项
一、目的:封装一个加载子项动画的行为二、实现1、通过动画依次加载子项显示2、封装在行为中方便调用3、设置动画的生成范围、显示时间、显示效果三、示例四、实现过程1、如下定义一个Behavior /// <summary> 容器内子控件加载时触发喷泉效果</summary> public class FountainAnima...原创 2019-12-23 13:42:55 · 738 阅读 · 0 评论 -
示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本
一、目的:封装了一些控件到自定义的控件库中,方便快速开发二、实现功能:基本实现常用基础控件,满足常规软件快速开发同时支持框架.Net Core 3.0 + ,.Net FrameWork4.5+三、整体概况1、登录页面:登录页面只需要继承LoginWindowBase基类,并且设置样式Style="{StaticResource S.Window.L...原创 2019-11-15 14:55:24 · 4613 阅读 · 8 评论 -
整理:C#中Expression表达式的妙用
一、目的:通过示例了解C#中Expression表达式的作用,通过表达式和反射可以写出很优雅的代码和架构,也可以完成一些看似不可能完成的任务二、示例:1、通过表达式获取成员属性定义模型: [Description("唯一标识")] class PersonModel { [Description("唯一标识")] pub...原创 2018-12-30 17:17:18 · 45451 阅读 · 6 评论 -
示例:WPF开发的代码生成工具
一、目的:在写代码过程中有时会遵循一定规则重复性的写代码,这些重复性的代码可以通过工具自动生成,从而提高开发效率二、实现:1、主要应用反射动态获取属性去匹配赋值;2、实现了根据实体模型生成ViewModel模型;3、实现了根据实体模型生成创建数据库表的Sql语句4、实现了根据实体属性去赋值另一实体的代码语句;5、实现了快速生成测试数据的代码语句;三、示例:...原创 2019-02-26 10:29:59 · 1865 阅读 · 2 评论 -
整理:WPF应用到的控件封装和调用示例
一、目的:在开发中常用到的一些控件、窗体、样式、模板、动画等等的封装示例,整理了一些网上开源的源代码为后续开发提升效率;二、示例:1、窗体、按钮、输入控件2、文本控件、勾选控件、下拉控件、表格控件3、日期控件、表格控件、树形列表控件、分页控件、进度控件4、导航控件、状态按钮、数字控件、拖动控件、树形控件、托盘图标控件、其他控件5、停靠控件、瀑...原创 2019-02-28 12:10:36 · 3535 阅读 · 5 评论 -
示例:ActiveMQ+Windows服务创建消息转发器
一、目的:通过应用ActiveMQ实现,消息的转发 应用场景:在阿里云部署ActiveMQ服务器,在银行柜台部署注册消息客户端,在后台发送消息,实现互联网消息的互通 二、安装ActiveMQ 1、下载地址:http://activemq.apache.org/download.html 2、修改用户名和密码:用户名和密码在conf中的jetty-realm.pr...原创 2019-01-16 16:14:49 · 480 阅读 · 1 评论 -
示例:Windows服务的打包部署
一、目的:应用VS2017打包功能打包自启动的Windows服务 (安装自启动,重启自启动)二、创建Window服务 1、添加新建项目Windows服务 2、添加安装程序 (右键Service1)ProjectInstaller3、修改安装程序ProjectInstaller中serviceInstaller1参数Description:服务的描述信息(“Activ...原创 2019-01-15 10:58:01 · 1953 阅读 · 0 评论 -
示例:WPF仿制OSK做的系统键盘和数字键盘
一、目的:在应用osk.exe系统键盘时遇到很多不方便,比如有些系统调用不出来等问题,由此开发了一个系统键盘仿制osk二、实现功能 1、目前实现大部分osk键盘的输入功能,还有部分按键由于时间关系没有实现 2、支持组合按键shift、ctrl、alt等方式输入 3、支持大小写输入切换 4、支持shift切换复合按键 ...原创 2019-01-19 14:38:29 · 6833 阅读 · 14 评论 -
示例:WPF开发的可视化大屏示例
一、目的:利用PhotoShop分解PSD可视化文件,获取图片等背景资源放入WPF中构建自己的可视化大屏项目二、效果图(半成品,后续更新..)原psd效果图三、参考代码(本示例仅供学习交流)GitHub -https://github.com/HeBianGu/WPF-ScreenData.git...原创 2019-01-08 17:47:01 · 18212 阅读 · 10 评论 -
示例:WCF中Post、Get方式传递消息
一、目的:搭建利用windows服务,控制台为宿主的Post、Get服务,应用Json或字符串的方式进行参数传递 二、服务端搭建 1、定义实体/// <summary> /// 消息实体 /// </summary> public class MessageEntity { /// <summary...原创 2019-01-08 10:21:30 · 3738 阅读 · 0 评论 -
示例:AspNetCore 2.2 打包并发布到IIS的示例
一、目的:记录一下AspNetCore发布并部署到IIS的方法二、环境:系统:Win10 或 Window Server 2008开发环境:VS2017 .Net Core 2.2三、过程: 发布->安装运行时->添加网站->设置无托管代码1、发布Web应用程序:说明:右键Web应用程序,点击发布,设置发布到文件系统和目标位置,...原创 2019-03-21 15:11:00 · 845 阅读 · 0 评论 -
示例:AspNetCore 2.2 MVC 注入日志
一、目的:了解Asp.net Core MVC中添加日志模块的过程二、过程:1、添加Logging.json到应用程序集中{ "Logging": { "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" ...原创 2019-03-22 18:22:36 · 934 阅读 · 2 评论 -
封装:简要介绍自定义开发基于WPF的MVC框架
一、目的:在使用Asp.net Core时,深感MVC框架作为页面跳转数据处理的方便,但WPF中似乎没有现成的MVC框架,由此自定义开发一套MVC的框架,在使用过程中也体会到框架的优势,下面简要介绍一下这套基于MVVM的MVC框架二、项目结构:主要有三部分组成:Controller、View、ViewModel其中View和ViewModel就是传统WPF中的MVVM模式...原创 2019-08-22 18:27:38 · 4542 阅读 · 2 评论 -
示例:WPF中自定义MessageService应用DialogHost、Snackbar、NotifyIcon显示各种场景提示消息
一、目的:不同交互场景需要提示不同的消息,不同的消息需要用不同的效果来展示,应用DialogHost(对话框)、NotifyIcon(消息提示)、Snackbar(气泡消息)显示各种场景提示消息,应用在ViewModel中二、实现:1、等待对话框2、确定对话框3、确定与取消对话框4、百分比进度和文本进度对话框5、气泡提示消息(NotifyIcon)6、...原创 2019-07-15 17:20:06 · 4533 阅读 · 2 评论 -
示例:WPF中自定义StoryBoarService在代码中封装StoryBoard、Animation用于简化动画编写
一、目的:通过对StoryBoard和Animation的封装来简化动画的编写二、示例:说明:渐隐藏是WPF中比较常用的动画,上图是通过StoryBoarService封装后的效果,在代码中只要执行如下代码即可: DoubleStoryboardEngine.Create(1, 0, 1, "Opacity").Start(element);上面的关闭效果可以定义一个命...原创 2019-07-15 15:59:18 · 3063 阅读 · 0 评论 -
示例:在Nuget发布自己的包的步骤
一、目的:很多时候都在用第三方的Nuget包,现成的轮子可以减少很多工作量,同时我们也可以造轮子供自己和其他人使用,本示例主要演示如何发布dll到Nuget上二、环境:Win10、VS2019、nuget.exe、nuget.org 帐户三、步骤:1、创建nuget.org 帐户 注册地址 https://www.nuget.org/2、...原创 2019-05-31 17:15:14 · 4417 阅读 · 0 评论 -
示例:EntityFrameWorkCore 一对一、一对多和多对多模型的建立
一、目的:测试再EntityFrameWorkCore中如何建立一对一、一对多和多对多模型二、环境:VS2019、.NetCore 2.2、Mysql 8.0、Win10三、一对一模型的建立:1、定义模型示例:学生和桌子的一对一关系:每个学生需要对应一个桌位信息,桌位信息不用包含学生信息 public class Desk { publ...原创 2019-05-15 15:01:36 · 5620 阅读 · 0 评论 -
示例:EntityFrameWorkCore迁移添加初始种子数据
一、目的:了解EntityFrameWorkCore迁移添加初始种子数据的方法二、步骤:迁移部分请参考EntityframeWorkCore应用MySql做数据迁移部分1、在DataContext中重写OnModelCreating方法 public class DataContext : DbContext { protected over...原创 2019-05-13 18:47:20 · 1717 阅读 · 0 评论 -
封装:基于FFmpeg开发的视频转换、剪切工具
一、目的:通过开发视频转换工具来了解WPF调用FFmpeg二、功能主要包括:1、视频的转换 按通源文件方式转换、常用编码格式转换、设置比特率、设置帧频、设置分辨率、设置宽高比等功能2、视频的剪切浏览视频文件,选取开始时间、结束时间进行截取三、效果如下:转换功能主页面如下: 剪切功能主页面: ...原创 2018-11-30 19:06:46 · 1292 阅读 · 0 评论 -
整理:WPF中应用附加事件制作可以绑定命令的其他事件
目的:应用附加事件的方式定义可以绑定的事件,如MouseLeftButton、MouseDouble等等 一、定义属于Control的附加事件ControlAttachEvent类/// <summary> 附加事件 </summary> public static class ControlAttachEvent { #re...原创 2018-10-24 17:31:35 · 866 阅读 · 0 评论 -
封装:Cmd命令调用和常用命令
一、Cmd命令调用方法1、静态方法调用 class Program { static void Main(string[] args) { // Todo :打开记事本 Process.Start("notepad"); // Todo :打开路径原创 2017-01-13 15:47:03 · 2219 阅读 · 0 评论 -
封装:Windows系统文件图标
用途:用于获取文件系统默认图标using System;using System.Collections.Generic;using System.Drawing;using System.IO;using System.Linq;using System.Runtime.InteropServices;using System.Text;namespace HebianGu.原创 2017-03-10 16:02:17 · 1047 阅读 · 0 评论 -
多线程互斥同步相关
目的:整理线程多线程同步数据相关方法一、信号量:Semaphore设置可以同时访问信号的个数说明:1、Release方法释放信号;2、WaitOne方法等待可应用的信号; public class SemaphoreDemo { //Semaphore(初始授予0个请求数,设置最大可授予5个请求数) static Semaphor原创 2017-01-13 15:17:55 · 258 阅读 · 0 评论 -
封装:Windows服务帮助类
内容:安装、卸载、启动、停止服务using HebianGu.ObjectBase.Logger;using System;using System.Collections;using System.Collections.Generic;using System.Configuration.Install;using System.Diagnostics;using System原创 2016-11-02 14:49:23 · 372 阅读 · 0 评论 -
封装:日志
日志一:一、日志缓存工厂(用于构建实现ILogInterface接口日志的缓存) /// 日志泛型缓存工厂 (应用于直接自带的日志引擎,对现有已经定义好的殷勤调用方便) public partial class LogFactory { // Todo :日志缓存 static List _cache = new List();原创 2016-11-02 13:41:04 · 337 阅读 · 0 评论 -
封装:MEF组件式框架封装
一、简介:MEF框架是用于创建可扩展的轻型应用程序的库;二、目的:对原生结构进行封装方便使用;三、实现步骤: 1、定义接口 public interface IMefDemoBase { void Init(); }2、实现接口和特性 /// ① 必须拥有Export特性 [Export(typeof(IMefDemoBa原创 2016-10-25 13:53:00 · 1067 阅读 · 0 评论 -
封装:内存镜像文件(MemoryMappedFile)封装,一维二维三维定点访问
1、问题:公司底层限制使用32位应用程序,针对大数据数据模型会产生内存溢出;2、解决方案:C#中可以使用MemoryMappedFile类将内存映射到硬盘中,将大网格数据保存在硬盘中节省内存;3、实测结果:读取写入速度可以接受,持久化效果良好;4、针对使用结构进行了如下封装,可用于泛型索引访问 /// 泛型 T 内存映射文件 public partial原创 2016-10-25 13:30:44 · 2079 阅读 · 0 评论 -
封装:Task任务管理
一、TaskL类型简介二、目的:封装Task类、调用方便可控三、实现过程1、定义接口:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Thread原创 2016-10-25 14:37:41 · 1842 阅读 · 1 评论 -
示例:递归返回集合的几种方式
用途:整理递归返回集合的几种写法1、利用添加返回集合递归 /// <summary> 获取当前文件夹下所有匹配的文件 </summary> public static List<string> GetAllFile(this DirectoryInfo dir, Predicate<FileInfo> match...原创 2017-03-22 14:21:34 · 5388 阅读 · 0 评论 -
整理:WPF中Xaml中绑定枚举的写法
目的:在Combobox、ListBox中直接绑定枚举对象的方式,比如:直接绑定字体类型、所有颜色等枚举类型非常方便 一、首先用ObjectDataProvider定义资源 <UserControl.Resources> <ObjectDataProvider x:Key="LeftRightAlignment" MethodName="Get...原创 2018-10-24 16:22:47 · 4039 阅读 · 0 评论 -
整理:C#中async与await异步方法的示例
目的:了解异步方法async、await的写法和执行步骤一、执行代码如下class Program { static void Main(string[] args) { // Do:开始主线程 Debug.WriteLine("Step 1"); // Do:调...原创 2018-10-26 15:16:49 · 2733 阅读 · 2 评论 -
整理:WPF中CommandBindings的用法
目的:了解一下CommandBindings、InputBindings、ICommandSource中在WPF中扮演什么样的角色CommandBindings:将应用程序要执行的功能封装到中间层组件或独立的类中:可以将所有命令统一封装,统一管理,统一调用定义过程: //将所有命令封装在一个类里面 public class MyCommands { ...原创 2018-10-20 17:27:36 · 12696 阅读 · 1 评论 -
整理:WPF用于绑定命令和触发路由事件的自定义控件写法
目的:自定义一个控件,当点击按钮是触发到ViewModel(业务逻辑部分)和Xaml路由事件(页面逻辑部分) 自定义控件增加ICommand #region - 用于绑定ViewModel部分 - public ICommand Command { get { return (ICommand)GetValue(...原创 2018-10-20 15:09:43 · 6151 阅读 · 0 评论