摘要: 本文将介绍如何将OpenXml的actTo转为Svg的弧线(a) OpenXml的artTo 首先下面是一段OpenXml的arcTo弧线 <arcTo wR="152403" hR="152403" stAng="cd4" swAng="-5400000" /> 假设我们当前的点是(0,0),这时 阅读全文
posted @ 2021-08-26 20:20 RyzenAdorer 阅读(610) 评论(0) 推荐(3) 编辑
摘要: 本文是将演示如何解析pptx文件的多路径的形状转换到WPF,绘制多个Shape的Path Shape Path 这是Pptx的【标注:弯曲曲线(无边框)】形状的OpenXml定义部分: <callout2> <avLst xmlns="http://schemas.openxmlformats.or 阅读全文
posted @ 2021-07-08 19:23 RyzenAdorer 阅读(518) 评论(1) 推荐(4) 编辑
摘要: 本文是将演示如何解析pptx文件的形状到WPF当中,并且绘制显示出来 安装Openxml sdk 首先,我们先安装nuget的openxml sdk,下面两种方式都可以安装: nuget包管理器控制台: Install-Package DocumentFormat.OpenXml -Version 阅读全文
posted @ 2021-06-08 20:22 RyzenAdorer 阅读(779) 评论(3) 推荐(1) 编辑
摘要: 本文是篇WPF Shape的入门文章 Shape 首先看看shape的继承链关系: 一个Shape具有哪些重要属性: 属性 说明 DefiningGeometry 默认的几何形状 RenderedGeometry 最终渲染后呈现的几何形状 Stroke 绘制的形状轮廓加上画刷(颜色) StrokeT 阅读全文
posted @ 2021-05-28 08:56 RyzenAdorer 阅读(1242) 评论(4) 推荐(4) 编辑
摘要: 前言 本文将介绍如何在其他程序集访问internal类的方法 首先我们新建一个解决方案,其中同时新建两个类库FooALibray和FooALibray,如下: 其中FooA类代码如下: internal class FooA { public void Print() { Console.Write 阅读全文
posted @ 2021-05-19 20:16 RyzenAdorer 阅读(796) 评论(3) 推荐(3) 编辑
摘要: 我们经常有遇到要处理文件路径的需求,那么一般我们常见的有几种: 程序下面的文件 临时目录下的文件 获取程序下面的文件 首先我们创建了实例解决方案: 其中调用链是:Main.Shell->FooALibrary->,首先我们将FooAFolder.txt和FooA.txt的文件属性设置生成操作为内容, 阅读全文
posted @ 2021-05-16 22:41 RyzenAdorer 阅读(1993) 评论(4) 推荐(8) 编辑
摘要: 如何加载非托管Dll 我们总会遇到需要加载非Win32的非托管dll,这里推荐一种方式就是将那些非win32的非托管dll嵌入资源的方式,在入口解压并且加载的方式,我先来看看如何实现吧,首先我们准备好demo,新增控制台项目如下: 代码如下: static void Main(string[] ar 阅读全文
posted @ 2021-05-15 12:59 RyzenAdorer 阅读(1619) 评论(0) 推荐(8) 编辑
摘要: 前言 我们都知道泛型在C#的重要性,泛型是OOP语言中三大特征的多态的最重要的体现,几乎泛型撑起了整个.NET框架,在讲泛型之前,我们可以抛出一个问题,我们现在需要一个可扩容的数组类,且满足所有类型,不管是值类型还是引用类型,那么在没有用泛型方法实现,如何实现? 一.泛型之前的故事 我们肯定会想到用 阅读全文
posted @ 2021-03-05 09:05 RyzenAdorer 阅读(4783) 评论(4) 推荐(34) 编辑
摘要: 前言 ​ 曾经我以学习的目的写了关于在.NET Core3.1使用Prism的系列文章.NET Core 3 WPF MVVM框架 Prism系列文章索引,也谢谢大家的支持,事实上当初的版本则是Prism7.2.0.1442(7.2)版本,而现在也发布了.NET5和最新的Prism8.0.0.190 阅读全文
posted @ 2021-01-20 10:26 RyzenAdorer 阅读(6380) 评论(20) 推荐(28) 编辑
摘要: 本文将详解C#类当中的Task,以及异步函数async await和Task的关系 一.Task的前世今生 1.Thread 一开始我们需要创建线程的时候一般是通过Thread创建线程,一般常用创建线程方式有以下几种: static void Main(string[] args) { Consol 阅读全文
posted @ 2020-11-09 09:43 RyzenAdorer 阅读(11528) 评论(53) 推荐(106) 编辑