本文将告诉大家一个在ZipArchive里追加文件夹,以及添加过滤文件处理的压缩文件辅助方法 实现的方法的代码如下 ///<summary> ///追加文件夹到压缩文件里面 ///</summary> ///<paramname="archive"></param> ///<paramname="sourceDirectoryName"></param> ///<paramname="zipRelativePath">在压缩包里面的相对路径</param> ///<paramname="com...

  gKJ2xtp6I8Y7   11天前   12   0   0 .NET

本文将从控制台开始,告诉大家一个非常简单的WPF基础绘图方法,通过本文的方法可以调用WPF上层人类友好的方法,充分利用GPU资源,创建或加工图片,最终结果可以输出到本地文件,可支持编码出多种不同的图片格式 本文仅用到WPF的多媒体渲染层,在WPF的这一层上的API是人类友好的,直接咱使用的是就是熟悉的DrawingContext类型。通过DrawingContext进行画线、画矩形、画几何、画图片、画文字,进行裁剪、变换、加特效等等,即可绘制出绚酷的界面效果。经由RenderTargetBitmap和BitmapEncoder即可将界面编码为图片输出到文件里面 从本质上讲,本文的方法里面只是将...

  gKJ2xtp6I8Y7   14天前   18   0   0 .NET

从设计架构上,无论是WPF还是ASP.NETCore框架,都是在dotnet运行时上层的应用,两个框架处于平级的结构。理论上讲,两个平级的框架只要不存在特殊的情况,都是能够相容存在的。本文将和大家介绍一个非常简单的方法,在一个进程内同时跑起WPF和ASP.NETCore框架 在一个进程内同时跑起WPF和ASP.NETCore框架在一些业务情况下还是一个不错的选择。比如以ASP.NETCore框架为主,让WPF作为状态展示的界面。比如以WPF为主,让ASP.NETCore框架充当应用对外接口,比如多应用之间的通讯等。更多的用法还请发挥你的想象力 只有将WPF更新到使用dotnetcore版本(包...

  gKJ2xtp6I8Y7   14天前   25   0   0 .NET

本文将分享我在dotnet里面使用Direct2D配合AOT开发一个简单的测试应用的经验。这是我用不到370行代码,从零开始控制台创建Win32窗口,再挂上交换链,在窗口上使用D2D绘制界面内容,最后使用AOT方式发布的测试应用。成品文件体积不超过10MB且运行内存稳定在60MB以内,满帧率运行但CPU近乎不动 此测试应用通过Win32裸窗口创建方式创建窗口且开启窗口消息循环。使用Direct2D进行界面绘制,可以比较方便绘制出复杂且绚丽的界面,整体使用类似于直接使用WPF的DrawingContext绘制界面内容。整体应用只依赖D2D绘制界面以及一点点Win32函数用来创建窗口,除此之外没有...

  gKJ2xtp6I8Y7   14天前   19   0   0 .NET

本文将详细指导大家如何逐步为dotnet系列应用创建满足UOS统信系统软件安装包的要求。在这里,我们所说的dotnet系列应用是指那些能够在Linux平台上构建UI框架的应用,包括但不限于CPF应用、UNO应用、Avalonia应用等 基于dotnet系的自发布自包含的能力,可以将dotnet系的应用进行发布为独立应用,无需框架依赖,如此即可执行deb包的二进制打包过程,从而很方便对接上UOS统信系统软件安装包的要求 整体步骤可以分为三个大步骤: 步骤一:发布应用 步骤二:组织文件结构 步骤三:打包deb文件 本文接下来将按照步骤顺序一步步告诉大家如何在Windows上为dotnet系的应...

  gKJ2xtp6I8Y7   14天前   15   0   0 .NET

以往的单元测试都是不能单独作为一个独立的可执行文件跑的,需要在VisualStudio或VSTest或dotnettest里面运行。这就限制了运行单元测试的环境了,有时候开发者可能期望在无SDK或开发环境下执行单元测试,这时就可以用到本文介绍的MSTestRunner功能,将单元测试制作为独立可执行文件 将单元测试制作为可执行文件,运行此可执行文件即可运行单元测试。可执行文件可以作为独立框架发布的方式,如此可以在一些纯净的环境里面运行,或者是将单元测试打包分发给测试同事,请测试同事在大批量的设备上进行执行。如此可见,将单元测试制作为可执行文件在许多地方都有用武之地,如: 在纯净系统环境运行 ...

  gKJ2xtp6I8Y7   14天前   19   0   0 软件测试

本文将告诉大家如何在WPF或者其他Win32应用里面,在收到鼠标消息时,通过GetMessageExtraInfo方法获取当前收到的鼠标消息是否由触摸消息提升而来 大家都知道,在不开启WM_Pointer的情况下,无论是走WM_Touch或者是RealTimeStylus等方式,默认下触摸都会提升为鼠标消息从而更好兼容应用程序的逻辑 如果此时应用程序想要根据消息循环里面接收到的Win32消息判断一个鼠标消息的来源是否来自于触摸框触摸屏或者是Pen笔等,可以通过GetMessageExtraInfo方法获取更多的信息 根据GetMessageExtraInfo方法获取到的LPARAM进行Mask...

  gKJ2xtp6I8Y7   15天前   20   0   0 .NET

我在一个WPF项目里面,在界面显示应用的版本号,更新到dotnet8的SDK之后,发现我的界面布局损坏了。本质上这个破坏性改动和WPF没有什么关系,是dotnet的SDK或编译器的破坏性变更,在AssemblyInformationalVersionAttribute的InformationalVersion属性里面写入了当前的git的commit提交号 咱可以非常方便写出代码获取到当前应用的版本号信息,如下面代码,我新建了一个简单的WPF界面用来显示当前应用的版本号 <Grid> <TextBlockHorizontalAlignment="Center"VerticalA...

  gKJ2xtp6I8Y7   15天前   24   0   0 .NET

本文记录的是在Windows系统里面,使用VisualStudio2022远程调试运行在UOS里面dotnet应用的配置方法 本文写于2024.03.19如果你阅读本文的时间距离本文编写的时间过于长,那本文可能包含过期的知识 我将以我的UOS虚拟机作为例子告诉大家如何在Windows系统里面,使用VisualStudio2022远程调试运行在UOS里面dotnet应用。这里的dotnet应用不仅包含纯控制台即可实现的ASP.NETCore也包括带GUI的程序,包括CPF、UNO/MAUI、Avalonia等UI框架上构建的可运行在UOSLinux系统上的应用 准备 第一步是保证UOS和Wind...

  gKJ2xtp6I8Y7   15天前   18   0   0 .NET

本文将和大家推荐我团队开源的LightWorkFlowManager轻量的工作过程管理库,适合任何需要执行工作过程的应用逻辑,可以方便将多个工作过程拼凑起来,且自动集成重试和失败处理,以及日志和上报功能 这个LightWorkFlowManager轻量的工作过程管理库是我所在的团队在GitHub上使用最友好的MIT协议开源的库,请看https://github.com/dotnet-campus/LightWorkFlowManager 这个LightWorkFlowManager轻量的工作过程管理库现在已经在我团队的正式产品应用上运行有半年了,相对来说比较稳定。使用过程中如果有任何问题,都欢...

  gKJ2xtp6I8Y7   2023年11月06日   43   0   0 .NET

本文将告诉大家一些笔迹算法,从用户输入的点集,即鼠标轨迹点或触摸轨迹点等,转换为一个可在界面绘制显示笔迹画面的基础数学算法。尽管本文标记的是WPF的笔迹算法,然而实际上本文更侧重基础数学计算,理论上可以适用于任何能够支持几何绘制的UI框架上,包括UWP或WinUI或UNO或MAUI或Eto等框架 我将从简单到复杂的顺序描述笔迹算法,本文属于比较偏算法底层,阅读之前请先确保初中的数学知识还没忘了 本文适合于想要了解笔迹绘制更多细节的伙伴,以及期望自己设计出更好看的笔迹的伙伴,以及没事干摸鱼看博客的伙伴 最简单的笔迹轨迹算法 大家都知道,无论是鼠标还是触摸还是笔,所产生的数据基本都是点数据。根据点...

  gKJ2xtp6I8Y7   2023年11月06日   26   0   0 .NET

本文记录一个WPF已知问题,当WPF的RadioButton指定GroupName且将IsChecked状态绑定到ViewModel上,将包含以上控件的代码的窗口显示两个,接着关闭其中一个。此时可以看到依然开着的窗口的RadioButton控件无法正确在用户界面上点击选中 此问题已经报告给WPF官方,请看https://github.com/dotnet/wpf/issues/2995 最小复现代码:https://github.com/walterlv/Walterlv.Issues.RadioButton.GroupName 此问题已被WPF官方修复,只需更新.NET即可 参考文档:202...

  gKJ2xtp6I8Y7   2023年11月06日   52   0   0 .NET

本文记录一个WPF已知问题,当WPF的RadioButton指定GroupName且将IsChecked状态绑定到ViewModel上,将包含以上控件的代码的窗口显示两个,接着关闭其中一个。此时可以看到依然开着的窗口的RadioButton控件无法正确在用户界面上点击选中 此问题已经报告给WPF官方,请看https://github.com/dotnet/wpf/issues/2995 最小复现代码:https://github.com/walterlv/Walterlv.Issues.RadioButton.GroupName 此问题已被WPF官方修复,只需更新.NET即可 参考文档:202...

  gKJ2xtp6I8Y7   2023年11月02日   18   0   0 .NET

本文将告诉大家一些笔迹算法,从用户输入的点集,即鼠标轨迹点或触摸轨迹点等,转换为一个可在界面绘制显示笔迹画面的基础数学算法。尽管本文标记的是WPF的笔迹算法,然而实际上本文更侧重基础数学计算,理论上可以适用于任何能够支持几何绘制的UI框架上,包括UWP或WinUI或UNO或MAUI或Eto等框架 我将从简单到复杂的顺序描述笔迹算法,本文属于比较偏算法底层,阅读之前请先确保初中的数学知识还没忘了 本文适合于想要了解笔迹绘制更多细节的伙伴,以及期望自己设计出更好看的笔迹的伙伴,以及没事干摸鱼看博客的伙伴 最简单的笔迹轨迹算法 大家都知道,无论是鼠标还是触摸还是笔,所产生的数据基本都是点数据。根据点...

  gKJ2xtp6I8Y7   2023年11月02日   54   0   0 .NET

本文将和大家推荐我团队开源的LightWorkFlowManager轻量的工作过程管理库,适合任何需要执行工作过程的应用逻辑,可以方便将多个工作过程拼凑起来,且自动集成重试和失败处理,以及日志和上报功能 这个LightWorkFlowManager轻量的工作过程管理库是我所在的团队在GitHub上使用最友好的MIT协议开源的库,请看https://github.com/dotnet-campus/LightWorkFlowManager 这个LightWorkFlowManager轻量的工作过程管理库现在已经在我团队的正式产品应用上运行有半年了,相对来说比较稳定。使用过程中如果有任何问题,都欢...

  gKJ2xtp6I8Y7   2023年11月02日   60   0   0 .NET

本文将介绍如何将MAUI的底层替换为WPF框架层,且将MAUI的内容嵌入到WPF的一个控件里面,无UI框架嵌入的空域问题 本文是MAUI框架开发博客,而不是MAUI应用开发博客,本文更多介绍的是进行MAUI这个框架的开发内容。不熟悉或不进行MAUI框架开发的伙伴也可以看着玩,看看这个有趣的黑科技。必须说明的是本文介绍的这条路仅仅只是我的想法,本文也仅仅完成了证明了技术上的可行性,不代表着后续MAUI必须往这个方向发展,以及不代表工程上的可行性 开始之前先看看效果,以下代码是放入到WPF项目的MainWindow.xaml文件里面的 <Grid> <StackPanel>...

  gKJ2xtp6I8Y7   2023年11月02日   65   0   0 .NET

在应用程序设计里面,不单是dotnet应用程序,绝大部分都会遵循让应用在出现未处理异常状态时终结的原则。在dotnet应用里面,如果一个线程顶层出现未捕获异常,则应用进程将会被认为出现异常状态而退出。通常来说就是未捕获异常导致进程闪退 在dotnet里面,有一个隐藏的陷阱,那就是asyncvoid将会在没有线程同步上下文的情况下,被当成线程顶层。如果在asyncvoid里面发生任何未捕获的异常,严重的话将会导致进程闪退 如以下代码,在当前执行线程没有线程同步上下文的情况下,抛出的异常将会让进程闪退 asyncvoidFoo() { ... thrownewException("林德熙是逗比"...

  gKJ2xtp6I8Y7   2023年11月02日   38   0   0 .NET

本文将告诉大家如何通过Vortice使用D2D的特效 本文属于DirectX系列博客,更多DirectX和D2D以及Vortice库的博客,请参阅我的博客导航 上一篇:DirectX使用Vortice从零开始控制台创建Direct2D1窗口修改颜色 在上一篇博客里面,咱创建了一个Win32空窗口,接着给他挂上了DirectX交换链。使用以下代码从交换链里面拿到了DXGI平面,拿到的的DXGI平面即可被绘制2D内容在上面,从而将内容绘制输出到窗口上 DXGI.IDXGISwapChain1swapChain=...//忽略交换链之前的代码 D3D11.ID3D11Texture2DbackBu...

  gKJ2xtp6I8Y7   2023年11月02日   47   0   0 .NET

在UWP的InkCanvas里自带了预测书写轨迹的功能,开启此功能可以进行书写预测,从而减少书写延迟。本文将告诉大家如何在UWP的InkCanvas里开启笔迹书写预测功能 在UWP的InkCanvas里开启笔迹书写预测功能只需要设置InkModelerAttributes的PredictionTime属性即可,这个属性是用来设置预测的时间量。默认值为15毫秒,有效范围为0到20毫秒,也就是最多能预测20毫秒之后的轨迹点。印象中在10240的文档里面,是有一个使用Inertia惯性预测算法的笔迹书写预测的,但是我现在还没找到文档 设置InkModelerAttributes的Prediction...

  gKJ2xtp6I8Y7   2023年11月02日   66   0   0 .NET

本文将告诉大家如何在SemanticKernel里面调用原生本机技能,所谓原生本机技能就是使用C代码编写的原生本地逻辑技能,这里的技能可讲的可不是游戏角色里面的技能哈,指的是实现某个功能的技能,这是构成AI强大能力的基础 本文属于SemanticKernel入门系列博客,更多博客内容请参阅我的博客导航 众所周知GPT是一个大语言模型,能够参与的输入和输出是文本内容。而想要让GPT完成各项功能,则需要对接现有的编程世界。为了能够更好的复用这几十年的编程世界积累的知识和搭建的基础设施,微软推出SemanticKernel框架,通过SemanticKernel框架可以让传统的编程语言和GPT等AI更...

  gKJ2xtp6I8Y7   2023年11月02日   67   0   0 .NET
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~