自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

碎碎念的安静的博客

碎碎念的安静的博客

  • 博客(46)
  • 问答 (1)
  • 收藏
  • 关注

原创 C#使用WebView2指定用户数据文件夹

在WebView2中,userDataFolder用于存储用户相关的数据,包括缓存、cookies、本地存储等。这个文件夹中的内容可以被WebView2控件访问和管理,用于提高浏览性能和用户体验。

2024-05-31 10:59:29 1225 1

原创 WPF绘图---Canvas中Polygon屏幕居中显示

WPF绘图---Canvas中Polygon屏幕居中显示。

2023-12-01 09:46:50 701 1

原创 System.Net.WebException:“请求被中止: 未能创建 SSL/TLS 安全通道。”

当使用 HttpWebRequest.GetResponse() 方法进行 HTTPS 请求时,有可能会出现 System.Net.WebException: 请求被中止: 未能创建 SSL/TLS 安全通道的异常,这通常是因为客户端和服务器之间的 TLS 版本不兼容造成的。

2023-03-08 16:13:22 15742

原创 C#计算线段方位角并转换角度

求线段的方位角并将角度转换到-90到90度之间

2022-12-16 10:54:31 2562

原创 C#自定义选择文件夹,可手动输入路径

C#自定义选择文件夹

2022-10-31 10:57:28 932

原创 Supermap---iServer修改数据集属性

使用超图封装的api修改数据集属性信息import { FeatureService } from '@supermap/iclient-ol/services/FeatureService.js';import { EditFeaturesParameters } from '@supermap/iclient-common/iServer/EditFeaturesParameters.js';function updateProperty(features: Feature[]) { f

2022-05-10 09:50:55 1157

原创 .Net6 WebAPI使用log4net记录日志

文章目录一、log4net是什么?二、使用步骤1.添加配置文件2.Program使用配置文件3.封装log4net操作3.1新建一个类库,添加nuget包。3.2工具类4.使用方法提示:以下是本篇文章正文内容,下面案例可供参考一、log4net是什么?log4net是一个可以帮助程序员把日志信息输出到各种 不同目标的.net类库。它可以容易的加载到开发项目中,实现程序调试和运行的时候的日志信息输出,提供了比.net自己提供的debug类和trace 类的功能更多。log4net是从java下有卓越表

2022-04-02 10:45:27 3262

原创 大华设备网络SDK_C#开发(二):获取远程设备连接状态

大华设备网络SDK,C#开发获取远程设备连接状态方法

2022-02-21 16:59:51 1784

原创 大华设备网络SDK_C#开发(一):设备登录

大华网络设备SDK,C#开发设备登录功能

2022-02-21 16:45:03 4733 5

原创 Cesium控制地形图层显隐

Cesium地形图层没有设置显示隐藏的属性方法,只能使用替换的方式实现function setTerrainVis(isShow) { let terrain; if (!isShow) { terrain = new Cesium.EllipsoidTerrainProvider({}); } else { terrain = new Cesium.CesiumTerrainProvider({ url: Terrain_U

2021-11-29 10:47:07 3303

原创 openlayers实现路径动画

实现效果如下代码const markStyle = new Style({ image: new Icon({ anchor: [0.5, 0.9], src: person_run //设置移动元素点的图片路径 })});// 路径动画图层let traceSource = new VectorSource({});let moveLayer = new VectorLayer({ source: traceSource});let

2021-11-15 17:23:06 2188

原创 OpenLayers分屏联动对比

温馨提示:本文所用OpenLayers版本为6.9.0解决方案一开始的想法是,一侧地图拖动时动态更新另一侧地图的Center,但是API没找见实时拖动的move事件,postrender事件可以实现但是影响效率,以下为实现方法,有兴趣的可以试试,但不建议使用。function togetherMove() { allMaps[0].on("postrender", function (e) { var c0 = allMaps[0].getView().getCenter(); v

2021-11-10 16:27:07 2019

原创 LibVLCSharp在WPF中无法响应鼠标事件

问题原因官方LibVLCSharp库的VideoView在WPF中其实还是使用的Win32控件WPF控件会被Win32控件遮挡,所以无法响应鼠标事件。解决办法在VideoView控件上添加一层透明的遮罩层用以响应鼠标事件<vlc:VideoView x:Name="vlcView" IsEnabled="False" Panel.ZIndex="1" ></vlc:VideoView><!--添加透明遮罩层,用来响应鼠标事件--><StackPanel

2021-09-23 11:25:55 1267

原创 WPF Image控件绑定后文件被占用问题

1.问题描述Image控件的Source绑定后图片被占用,此时无法删除或在别处使用此图片,会导致报错。解决方法:通过转换的方式,不直接将图片路径绑定到Source,而是将需要绑定的图片读取字节并释放,创建BitmapImage对象,使用读取的字节初始化BitmapImage。2.代码xaml代码<Window.Resources> <comm:ImageConvert x:Key="string2Img"/></Window.Resources>&

2021-06-23 11:30:25 1121

原创 WPF使用PictureBox

一、添加引用按照下图添加相关引用二、代码实现1.Xaml<Window x:Class="PictureBoxInWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.micros

2021-06-09 16:08:14 6476

原创 WPF使用VLC播放视频

本文使用的是VLC的官方库还有另外一种方法是使用Vlc.DotNet,Git地址:https://github.com/ZeBobo5/Vlc.DotNet一、添加引用在Nuget中搜索下载二、代码1.Xaml添加引用xmlns:vlc="clr-namespace:LibVLCSharp.WPF;assembly=LibVLCSharp.WPF"添加控件<vlc:VideoView x:Name="vlcView"/>2.后台//初始化vlcCore.Initia

2021-06-09 15:39:11 1308

原创 Prism8.0(二):数据绑定与命令

前言Prism默认的绑定规则是Views文件夹内的界面(如Test.xaml)查找ViewModels文件夹中对应的VM(如TestViewModel.xaml), 所以ViewModel的后缀必须正确,如需要修改默认规则,请在App中重写方法ConfigureViewModelLocator如果需要对自定义ViewModel进行绑定,请在ConfigureViewModelLocator方法中加入代码//Test为自定义的ViewModel类ViewModelLocationProvider.Re

2021-02-05 16:49:25 4634

原创 Prism8.0(一):项目搭建

Prism是用于在WPF和Xamarin Forms中构建松耦合,可维护和可测试的XAML应用程序的开源框架。方法一:手动创建创建一个.Net Framework或者.Net Core的WPF项目,注意最新的8.0在仅支持.Net Framework 4.6.2及以上版本。Prism默认支持两种依赖注入容器DryIOC和Unity,这里直接使用Unity,在NuGet包管理器中搜索Prism.Unity。修改App.xaml如下,使用PrismApplication重写方法:public p

2021-02-05 14:27:38 1862 1

原创 Unity第一人称视角走跳

添加一个空的游戏对象作为第一人称玩家,添加角色控制器、刚体组件,绑定脚本脚本代码public class Player : MonoBehaviour{ /// <summary> /// 摄像机Transform /// </summary> Transform m_camTransform; /// <summary> /// 摄像机旋转角度 /// </summary> Vector

2021-01-07 17:52:56 1273

原创 WPF添加超图场景控件

添加引用由于超图控件是Winform,所以WPF中无法直接添加,需要将其放在容器内才可正常显示,需引用下图中两个程序集。XAML引用xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"Winform容器<wfi:WindowsFormsHost x:Name="hostSceneControl" Grid.Row="1"></wfi:Windo

2020-10-22 09:32:43 487

原创 WPF解决Popup窗口随动及显隐

使用自定义Popup控件public class CusPopup : Popup{ /// <summary> /// 应用状态 /// </summary> private bool? _appliedTopMost; /// <summary> /// 是否已经加载 /// </summary> private bool _alreadyLoaded; /// <summa

2020-08-29 15:20:46 1640

转载 WPF在新线程上打开窗体

当WPF应用程序运行时,默认会创建一个UI主线程(因为至少需要一个),并在该UI线程上启动消息循环。直到消息循环结束,应用程序就随即退出。那么,问题就来了,能不能创建新线程,然后在新线程上打开一个新窗口实例?这样可以让不同窗口运行在不同的线程上,一定程度上可以相互“独立”。其实呢,完全的独立运转似乎不太可能,毕竟嘛,线程是抢占 CPU 时间片的,即各个线程间是交替运行的,现在处理器基本是N核的,可以结合并发一起用(在.net 中,使用 Task 可以自动并发)。不管怎么说吧,对UI的响应能力应该能有所改善

2020-08-06 11:29:19 1048

转载 WPF全屏

使用扩展类的方式设置全屏扩展类代码:public static class FullScreenHelper{ private static Window _fullWindow; private static WindowState _windowState; private static WindowStyle _windowStyle; private static bool _windowTopMost; private static ResizeMod

2020-06-19 18:27:32 384

原创 SuperMap iObject .NET-开发环境搭建

SuperMap iObject .NET—开发环境搭建本文以SuperMap最新版的10i与Visual Studio 2019为例进行搭建,目标是在WPF中进行开发,后续会发相关的SuperMap WPF的开发。1.包下载在官网中下载相关文件,参照下图。官网下载地址2.环境配置解压后文件列表如下,选择Install_x86.bat以管理员身份运行,这个操作应该包括环境变量、VS工程模板文件、引用和工具箱的添加。运行会直接将开发环境部署到VisualStudio2010和2012中,其他版本的

2020-06-11 23:23:28 4176

原创 WPF多线程更新UI方法

1.问题描述在开发过程中,我们有时候需要使用多线程来完成某些特定的功能,如果想要在子线程中更新UI元素(例如进度条),就会有一个线程安全性问题,因为进度条是由主线程创建出来的。这时候程序就会报错“调用线程无法访问此对象,因为另一个线程拥有该对象。”2.解决方法通常使用Dispatcher来实现Task.Run(() =>{ try { //耗时操作 //Do Some Thing... } catch (Exception ex) { MessageBox.Show(e

2020-05-18 15:11:21 1601

原创 WebApi配置Swagger

WebApi配置Swagger流程1.添加NuGet包在项目的NuGet包管理器中搜索名为Swashbuckle的包,然后安装2.配置项目属性生成中勾选XML文档,填写文件名3.设置swagger在App_Start文件夹下创建名为SwaggerConfig的类,添加以下内容public class SwaggerConfig{ public static void R...

2020-04-27 11:58:37 1345

转载 C#多边形顶点排序

方法原理:根据向量叉积的定义,向量OA和OB的叉积大于0,则向量OB在向量OA的逆时针方向,即点B小于点A。/// <summary>/// 多边形点集排序/// </summary>/// <param name="vPoints"></param>/// <returns></returns>public Li...

2020-04-26 17:09:10 1743 2

原创 C#凸包算法

一、描述凸包:给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。结果如下图所示。二、算法参数传入点集即可。private List<Point> calcConvexHull(List<Point> list){ List<Point> resPoint = new List<Point>(...

2020-04-26 16:52:44 2464 4

原创 C#多边形相交、合并等操作

最近在做项目时遇到需要对二维的多边形进行相交及合并的操作,自己也写了很多方法,但是效果都不是很理想,最终决定使用GPC库,此库中有很多复杂的多边形裁剪方法,现对此库的使用方法做简单描述,源码在文末贴出。GPC库的官方网站:http://www.cs.man.ac.uk/~toby/gpc/调用方法思路:将GPC库封装到为C#控制台应用程序项目中调用此控制台应用程序与控制台应用程序通信获...

2020-04-21 11:13:51 3323 1

原创 WPF TextBox仅输入数字(含小数)

TextBox(包含一个提示的样式):<TextBox Width="200" Height="40" InputMethod.IsInputMethodEnabled="False" PreviewKeyDown="TextBox_PreviewKeyDown" PreviewTextInput="TextBox_PreviewTextInput" DataObject...

2020-04-20 10:50:33 2190

原创 Vue+Antd表单校验form.validateFields执行错误的解决方法

以下是一段手机号的的自定义校验,在提交表单的时候form.validateFields总是出现错误,方法无法向下执行//自定义校验(检查手机号是否输入正确)checkPhone(rule, value, callback) { if (value != null && value != "") { var reg = /^1[3456789]\d{9}$/; ...

2020-03-16 19:47:29 12689

原创 vue项目解决跨域请求服务端api

从vue3版本开始,项目目录改变,config文件夹不存在,在根目录下创建名为vue.config.js的文件,在文件中添加请求代理,代码如下:module.exports = { devServer: { open: true, //是否自动弹出浏览器页面 host: "localhost", port: "本地端口号", https: false, ...

2020-03-13 17:31:35 923

原创 Abp vNext使用MySql数据库

首先使用ABP CLI创建项目,例如名为Book1、修改数据库连接字符串在Book.Web项目中,打开‘appsetting.json’文件,修改连接字符串为MySql:"ConnectionStrings": { "Default": "server=localhost;port=3306;database=testdb;User ID=root;Password=123456;"}...

2020-03-10 18:18:04 1582

原创 C#树结构的查询方法

数据为标准的树结构,Children为子集/// <summary>/// 查询树/// </summary>/// <param name="tree">树结构</param>/// <param name="value">查询条件</param>private void HandleSearch(List&lt...

2020-03-10 15:33:13 1895 4

转载 一个老程序员积累的20条编程经验

1. 估算解决问题所需要的时间。不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时。为自己定一个时间限制吧,1小时、30分钟或甚至15分钟。如果在这期间你不能解决问题,那就去寻求帮助,或到网上找答案,而不是尝试去做“超级堆码员”。2. 编程语言是一种语言,只是一种语言。随着时光推移,只要你理解了一种语言的原理,你会发现各种语言之间的相似之处 。你所选择的语言,你应该...

2020-01-13 18:03:55 263

原创 Revit中构件的连接与剪切操作

此方法用于两个构件之间的连接及剪切等操作,此方法相当于Revit工具栏中的连接与剪切操作,使用Revit封装的JoinGeometryUtils及SolidSolidCutUtils工具类。代码如下:protected override Result ExecuteCommand(ExternalCommandData data, ref string message, ElementSet ...

2020-01-10 11:16:36 4617

原创 Revit获取楼板边界

获取楼板边界,包含开洞代码如下:private const double _offset = 0.1;/// <summary>/// 获取楼板的边界坐标点集合/// 向下少量偏移/// </summary>public List<List<XYZ>> GetFloorBoundaryPolygons(List<Element&g...

2020-01-10 11:13:56 2236 2

原创 Revit插件打包(2)---安装包制作

上一章中分享了AddIn动态生成程序的实现方法,本文演示Revit二次开发外部应用插件的安装包制作过程,所需工具等请翻看上一章自行下载。一、准备工作所需以下文件:另外,打包工具使用的是兮米安装包制作工具,文件中已放入安装包二、打包配置信息填写:添加数据,添加上文中准备的文件夹:操作配置,因为是插件,所以不需要快捷方式:完成安装后不需运行:去除桌面快捷方式:安装包界面...

2019-12-26 09:41:57 1541 3

原创 Revit插件打包(1)---动态生成AddIn文件

本文提供Revit插件的打包方式,本文着重介绍AddIn文件的动态生成实现方法,安装包制作过程在下一篇文章中介绍,源码及所需文件在文章末尾列出。一、打包实现逻辑用户点击安装程序,开始执行安装将插件相关数据解压到用户指定目录中根据当前插件安装的位置动态生成addin文件到本机Revit插件加载目录中将资源文件复制到本机Revit安装目录下(项目所需,其它项目请忽略此步骤)安装完成二...

2019-12-25 18:09:39 1791

翻译 WPF TreeView选择事件执行多次

TreeView的选择事件不断向上传递,子节点执行事件后父节点也会触发,这是由于从主窗口窃取了焦点。为了避免这种情况,我们要做的就是简单地延迟对我们代码的调用,即我们需要在SelectedItemChanged中执行的MyFunction()。这是一种解决方法,它会延迟打开新窗口的调用,直到项目选择代码完成为止。private delegate void NoArgDelegate(); ...

2019-12-23 15:54:56 884

空空如也

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

TA关注的人

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