首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF 实现带明细的环形图表

/WPFDevelopers.Charts 大体思路 图表使用Arc+Popup实现; 图表分为两部分,一是环形部分,一是标注的明细部分; 环形部分使用Arc图形表示.需要注意这个Arc是Blend里的图形...首先以0-90度为例,说明一些基本的东西,见图; 首先Popup默认的位置,都是在它容器的左下方的,Popup的左上角和容器的左下角重合; 现在要做的是Popup标记为红点的位置,和圆环上标记为红点的位置重合...r相等;注意:因为圆弧是有厚度的,所以取r的时候要减去二分之一的圆弧厚度; 角A是可以通过90度减去圆弧的对应的角度求出来的,也就是sinA的值已知了,那么就可以求出a和b的长度,然后就可以去移动Popup...3、向上移动一个a的距离; 2)90-180度 X轴 : 1、向右移动二分之一个容器的width; 2、向右移动一个a的距离; Y轴 : 1、上移二分之一个圆弧的Thickness,以保证标记的起点在圆弧的中央...)的距离; 4)270-360度 X轴 : 1、向左移动一个a的距离; Y轴 : 1、向上移动二分之一个容器的height; 2、向上移动一个Popup的height; 3、向上移动一个b的距离;

48810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WPF dotnet core 如何开启 Pointer 消息的支持

    在 WPF 下,可以使用和 UWP 一样的 Pointer 触摸架构,只是开启的方式和 .NET Framework 版本有细微的差异 看过 win10 支持默认把触摸提升 Pointer 消息 的小伙伴可以了解到...,这个博客的方法是通过配置文件的方式 而在 .NET Core 的 WPF 下是不会去读取 App.config 文件,那么此时应该如何开启?...AppContext.SetSwitch("Switch.System.Windows.Input.Stylus.EnablePointerSupport", true); } 此时就可以开启 Pointer 消息的支持...注意需要在第一个窗口的显示之前调用,否则这个开关也就无效 开启之后,还请小伙伴测试一下,看是否真的开启了 Pointer 消息测试方法请看 WPF 如何确定应用程序开启了 Pointer 触摸消息的支持...代码放在 github 欢迎小伙伴访问 特别感谢 WPF 官方开发者Rob LaDuca 告诉我这个方法,详细请看 https://github.com/dotnet/wpf/issues/3360

    56310

    WPF 简易手绘笔迹支持回放的方法

    手绘笔迹实际上就是需要支持回放的,手绘笔迹指的是在应用程序里面支持回放出手绘出来的笔迹。...本文来告诉大家一个简易的方法 啥都不说,先来一张图 在抬手的时候绘制出刚才所画的笔迹,做动画画出笔迹,就和手绘差不多的效果 下面来告诉大家核心的原理 在 WPF 中,可以使用一个叫路径动画的功能,通过这个功能可以传入一个...Path 路径就能动画出这个轨迹 在 WPF 中,笔迹的底层绘制是使用 Geometry 进行绘制。...这个蒙层是做刮刮卡的好工具,大概效果如下图 依靠上面三个机制就能实现手绘笔迹支持回放轨迹的动画功能 当然,第一步是需要支持笔迹书写的功能,这部分功能还请看 WPF 最简逻辑实现多指顺滑的笔迹书写 这篇博客的内容...更高级一点的是需要考虑一下音效等 以上其实就是来画手绘软件的手绘部分的 WPF 版的大概实现方法了,这是在 2018 的时候 邵猛 哥和我吹的时候告诉我的一个方法,详细请看 UWP 手绘视频创作工具技术分享系列

    45920

    支持向量机SVM工具包LIBSVM的安装和测试

    支持向量机(Support Vector Machine, SVM)作为一种有监督学习的二元分类器,在小样本分类中具有突出的优势,因此非常适合于基于脑影像数据的疾病分类研究。...LIBSVM工具包是台湾大学Lin Chih-Jen教授等开发一个SVM工具包,其可运行于Python, R, MATLAB等语言环境下,是目前大家用的比较多的一个SVM工具包。...从打开的网页中找到图2所示的下载页面,点击下载zip或 tar.gz格式的压缩包,目前的最新版本是libsvm-3.23 解压下载的压缩文件,里面包含包含MATLAB、Python等版本的安装包...LIBSVM安装成功后,可以用工具包自带的数据集“heart_scale”进行测试。...总结 支持向量机SVM作为一种有监督学习的二元分类器,在小样本分类中具有突出的优势,因此广泛应用于脑科学领域。

    1.3K30

    让 WPF 的 RadioButton 支持再次点击取消选中的功能

    让 WPF 的 RadioButton 支持再次点击取消选中的功能 目录 让 WPF 的 RadioButton 支持再次点击取消选中的功能 零、前言 一、方法一:后台直接处理 二、方法二:提取为自定义控件...上面的动图先演示了 RadioButton 默认是不支持取消选中的;然后演示了通过上面代码实现的支持取消选中的 RadioButton。...原因就是,我们新建的那个用来记录上次选中状态的变量,在用户选中其它项,同时 WPF 框架自动取消选中本项时,没有进行记录。...后 Click 前的某个事件,比如 PreviewMouseUp),WPF 框架(或者说是 RadioButton 内部)就会把 IsChecked 设为 true(这就是前面的代码中需要另外新建变量来判断的原因...可以参考我之前的翻译文章《【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPF》: 在一个元素上设置一个附加属性,那么你就可以从暴露这个附加属性的类中获得该元素的访问

    2.2K30

    最简单的代码,让 WPF 支持响应式布局

    最简单的代码,让 WPF 支持响应式布局 响应式布局在各种现代的 UI 框架中不是什么新鲜的概念,基本都是内置支持。...然而在古老的 WPF 框架中却并没有原生支持,后来虽然通过 Blend 自带的 Interactions 库实现了响应式布局,但生成的代码量太大了,而且需要引入额外的库。...如果只是希望临时局部地方使用响应式布局,那么其实可以直接使用 WPF 内置的绑定机制来完成响应式布局。本文介绍如何使用。 ---- 思路是在控件尺寸发生变更的时候更新控件的样式。...直接在控件上使用的 Trigger 只能使用 EventTrigger,因此我们需要编写能写更多种类 Trigger 的 Style。...这里我们需要一个大于或等于,以及小于的转换器。

    1.2K10

    最简单的代码,让 WPF 支持响应式布局

    响应式布局在各种现代的 UI 框架中不是什么新鲜的概念,基本都是内置支持。...然而在古老的 WPF 框架中却并没有原生支持,后来虽然通过 Blend 自带的 Interactions 库实现了响应式布局,但生成的代码量太大了,而且需要引入额外的库。...如果只是希望临时局部地方使用响应式布局,那么其实可以直接使用 WPF 内置的绑定机制来完成响应式布局。本文介绍如何使用。 思路是在控件尺寸发生变更的时候更新控件的样式。...Collapsed" /> 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/wpf-adaptive-ui-in-simplest-way.html...,以避免陈旧错误知识的误导,同时有更好的阅读体验。

    31820

    为 WPF 程序添加 Windows 跳转列表的支持

    Windows 跳转列表是自 Windows 7 时代就带来的功能,这一功能是跟随 Windows 7 的任务栏而发布的。...当时应用程序要想用上这样的功能需要调用 shell 提供的一些 API。 然而在 WPF 程序中使用 Windows 跳转列表功能非常简单,在 XAML 里面就能完成。...本文将介绍如何让你的 WPF 应用支持 Windows 跳转列表功能。 ---- 一个简单的跳转列表程序 新建一个 WPF 程序,然后直接在 App.xaml 中添加跳转列表的代码。...Windows 的跳转列表有两种不同的列表项,一种是“任务”,另一种是文件。至于这两种不同的列表项如何在跳转列表中安排,则是操作系统的事情。...Extensions - Windows applications - Microsoft Docs 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/wpf-application-with-jumplist.html

    1.2K20

    WPF 支持的多线程 UI 并不是线程安全的

    WPF 支持创建多个 UI 线程,跨窗口的或者窗口内的都是可以的;但是这个过程并不是线程安全的。 你有极低的概率会遇到 WPF 多线程 UI 的线程安全问题,说直接点就是崩溃。...简述这个线程安全问题 必要条件: 创建多个 WPF UI 线程 其实两个就够了,一个我们平时写的 App 类所在的主 UI 线程;一个后台 UI 线程,例如用来显示启动闪屏的 UI 线程 两个线程的话你需要大量重复试验才能复现...;而创建更多线程可以大大提高单次复现概率 这些 UI 线程都显示 WPF 窗口 无论是 .NET Framework 4.7.2 版本的 WPF,还是 .NET Core 3 版本的 WPF 都会出现此问题...WPF 中在 Visual Studio 2019 抓到的异常: 复现步骤 创建一个新的 WPF 项目(无论是 .NET Framework 4.7.2 还是 .NET Core 3) 保持自动生成的...,以避免陈旧错误知识的误导,同时有更好的阅读体验。

    47220

    一款支持手绘风格的开源图表工具—Excalidraw

    前言 在文章撰写中,我们常常需要配以图表或者图形来更加丰富的呈现。...Excalidraw是一个虚拟白板应用,专门用于绘制类似手绘的图表。它提供了一个无限的、基于画布的白板,具有手绘风格,支持多种功能。 新更新允许用户输入文本描述,将其自动转换为相应的图表或图形。...Excalidraw是一款开源的虚拟白板工具,拥有手绘风格,支持协作和端到端加密。...使用Excalidraw,你可以创建美观的手绘风格图表、线框图等 主要特点: •Excalidraw编辑器(npm包)支持以下功能:• 免费且开源。•无限的、基于画布的白板。•✍️ 手绘风格。...•⚒️ 提供广泛的工具 - 矩形、圆形、菱形、箭头、线条、自由绘制、橡皮擦等。•️ 支持箭头绑定和标签箭头。• 支持撤销/重做。•支持缩放和平移。

    92210

    WPF 制作支持点击穿透的高性能的透明背景异形窗口

    默认的 WPF 的支持点击穿透的透明背景窗口,是通过 AllowsTransparency 实现的,但是此方法的性能比较低。...但根据 WPF 从最底层源代码了解 AllowsTransparency 性能差的原因 可以了解到此方法的性能比较低 本文提供的方法是使用 WPF 制作高性能的透明背景异形窗口(使用 WindowChrome...而做不到和 WPF 提供的 AllowsTransparency 的方法让透明的部分支持穿透。...为了让 WPF 支持设置 WS_EX_LAYERED 样式,可以在上面 HwndTarget 的逻辑运行完成之后,运行咱自己的逻辑,再设置一遍。...的方法只支持在有开启 DWM 的模式下才能用上,否则透明部分会显示黑色 判断是否开启 DWM 可以使用 Dwmapi.dll 提供的 DwmIsCompositionEnabled 方法,如下面代码

    2.9K20

    WPF 如何确定应用程序开启了 Pointer 触摸消息的支持

    因为 WPF 在开启 Pointer 和没有开启的基础表现几乎相同,因此从业务层很难了解到当前是否开启了 Pointer 消息。...本文从开发者的角度,通过 Windows 消息判断当前是否开启 Pointer 支持 在 win10 支持默认把触摸提升 Pointer 消息 告诉大家如何在 Win10 下让 WPF 在 .NET 4.7...和以上框架支持 Pointer 消息 那么如何确定这个 WPF 程序我写对了,开启了 Pointer 消息?...可以通过监听 Window 消息,如果能收到 Pointer 的消息,那么算开启成功 不需要在用户端判断,用户端只需要判断 运行的系统是 Windows 10 Creators Update 1703...因此本文更多是给开发端,开发的时候通过此方法可以确定是否开启了 Pointer 消息 在 WPF 添加窗口消息钩子方法 这篇博客告诉大家如何拿到窗口的消息 在这个基础上,尝试在拿到消息判断是否 Pointer

    65220

    AgileEAS.NET 4.0重构裁剪,新的ORM、支持Linq,正式支持WPF,开放更多的接口

    正式支持WPF插件         因为之前一直运行于.NET Framework 2.0之上的原因,所以AgileEAS.NET平台一直没有提供对WPF技术的支持,本次重构之后,平台支持WPF技术,具体使用技术与...调整了WinForm/WPF运行容器         AgileEAS.NET平台支持了WPF技术,但对于我们现行的客户来说,使用最多的还是Winform技术,WPF技术可以现有补充,但不是全部替换,那就需要解决一个问题...,Winform插件与WPF插件的共存,本次重构调用了之前的Winform运行容器,以期同同时支持Winform和WPF,即WinForm/WPF运行容器。        ...WinForm/WPF运行容器开放更多的接口          Winform/WPF运行容器在之提为大家提供了基于资源接口的方式进行自定义logo、标题等方式的替换,大家可以参考callhot的AgileEAS.NET...,更重要的是,新的ORM技术支持linq。

    1.1K50

    WPF 用 AvalonEdit 开发简单的代码编辑器 支持高亮自动提示

    用 WPF 开发一个代码编辑器的难度很低,因为行业里面有很多小伙伴开发过,这些小伙伴将自己的代码开源了,发布到 NuGet 上,所以让我开发一个代码编辑器的难度实在太低。...在不要有奇特的要求情况下,通过 AvalonEdit 可以快速开发出自己想要的代码编辑器 第一步通过 NuGet 安装 AvalonEdit 打开 xaml 界面,添加控件,此时可以在界面设置代码高亮方式等...="XML" 设置 AvalonEdit 的代码字体和大小分别是 FontFamily 和 FontSize 属性 很多代码编辑器都有行号,通过 ShowLineNumbers 属性让自己用 WPF 写的代码编辑器可以显示行号...,通过下面属性让 AvalonEdit 支持设置继承上一行的行首空格 的代码放在 github 欢迎小伙伴访问

    5.3K10

    WPF 已知问题 BitmapDecoder.Create 不支持传入 Asynchronous 的文件流

    这是在 GitHub 上有小伙伴报的问题,在 WPF 中,不支持调用 BitmapDecoder.Create 方法,传入的 FileStream 是配置了 FileOptions.Asynchronous...本质原因是 WIC 层不支持,和 WPF 没有关系 GitHub 链接: BitmapDecoder.Create does not handle FileStream with FileOptions.Asynchronous...,传入的带 FileOptions.Asynchronous 的 FileStream 抛出错误,不是 WPF 层的锅,而是 WIC 层不支持。...在 GitHub 上报告的作者 Nikita Kazmin 给了一个我同意的建议是 WPF 在 BitmapDecoder.Create 方法里面应该判断一下,如果传入的 FileStream 是异步的...和 gitee 欢迎小伙伴访问 当前的 WPF 在 https://github.com/dotnet/wpf 完全开源,使用友好的 MIT 协议,意味着允许任何人任何组织和企业任意处置,包括使用,复制

    54730

    dotnet 9 WPF 支持 Style 的 Setter 填充内容时可忽略 Value 标签

    本文记录 WPF 在 dotnet 9 的一项 XAML 编写语法改进点,此改进点用于解决编写 Style 的 Setter 进行给 Value 赋值时,不能将 Value 当成默认内容,需要多写 Value...通过此改进点可减少两行 XAML 代码 在原先的 WPF 版本里面,对 Style 的 Setter 填充复杂的对象内容时,大概的示例代码如下 ...被微软的 Anjali 在 https://github.com/dotnet/wpf/pull/8534 实现 此变更将影响 XAML 语法,对应的文档也进行了同步更新,详细请看 https://github.com.../dotnet/wpf/pull/8534 的实现里面,将 Setter 的 Value 当成默认内容,于是在 Setter 里面放入的内容,将会自动给 Value 进行赋值 上述的核心逻辑在 src/.../wpf 完全开源,使用友好的 MIT 协议,意味着允许任何人任何组织和企业任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。

    18610

    Xamarin 社区团队发布了的两个新的工具包 MAUI 兼容版本

    今天的 MauiCompat 版本包括对 iOS 和 Android 的支持。未来的 MauiCompat 版本将包括对 iOS、Android、macOS 和 UWP 的支持。...我们建议最终将 Xamarin.CommunityToolkit.MauiCompat 替换为新的 .NET MAUI 工具包 CommunityToolkit.Maui,以利用新功能和优化(请参见下面的图表...❌ 全新的 .NET MAUI 应用程序 对于新的(又名绿地).NET MAUI 应用程序,请使用新的 .NET MAUI 社区工具包,该工具包针对 .NET MAUI 进行了全面优化,而不是 Xamarin.CommunityToolkit.MauiCompat...您可以只注册实际需要的渲染器,也可以注册 Xamarin 社区工具包内的所有渲染器。看看下面的代码片段如何做到这两点。...非渲染器控件 有些控件不需要(单独的)渲染器,即 Shield。目前不支持这些控件。我们有一个 标记应该有效 该包应该可以正常工作,因为它不依赖于渲染器。

    2.3K10
    领券