问题:修改LiveChart的提示显示位置

摘要:相信WPF开发者在用LiveCharts的时候会有遇到这个需求。就是产品要求折线图的提示要显示的正常点。

需求:如下图所示。原本显示是在下方并且没有小三角。然后产品需要改成如图二所示

       图一

图二

处理环境:LiveCharts源码一份

了解LiveCharts源码的处理机制

当然,要全了解可能有点难。像我这种菜鸟基本上就只能做点小修改。如果有闲时功夫倒可以去了解一下。

增加小倒三角

首先定位到这个提示框的UI页。这个提示框的页面叫做DefaultTooltip.xaml,然后对其页面布局进行如下操作即可出现小三角,请注意我画框的部分。Effect为阴影,由于对下面的布局有进行Marin的调整,所以会导致阴影显示异常。所以我再这里给他选择删除。然后那个boder就是一个正方形旋转了45°。代码如下图所示:

调整提示框显示位置

找到如下图代码位置,这个地方就是设置提示框的位置。当然有些统计图的提示框可能跟这个会有所偏差。但由于我只用到折线图,所以就给他强制改下去了。需求万岁 T  ^ T

首先将原来的代码注释掉。location.X其实就相当于DefaultTooltip距离画布的Left,location.Y其实就相当于DefaultTooltip距离画布的Top。然后有人会说提示框的宽高不固定什么的。其实如果通过断点会发现他提示框其实是有实际的宽高的也就是DataTooltip.ActualWidth和DataTooltip.ActualHeight。至于我为什么加30呢?因为他这个location.X并不是折线图的点到边缘的位置。所以为了更好的定位,我先将这个提示框到边缘的位置跟点到边缘位置统一。然后再通过对DataTooltip.ActualWidth的实际宽度进行除以2.然后通过location.X来得到居中位置。

然后location.Y到上方边缘的位置其实跟点到上方的位置是一致的,所以我这边直接对他进行location.Y减去实际高度DataTooltip.ActualHeight。然后可能是对于高度有些偏差。然后给他加了个10以此来达到实际的效果。

效果

下图就是我改完编译然后让需要的项目引用后得到的效果。看上去跟上面的需求其实也就差不了太多了。就差一个阴影等小细节

结尾

首先感谢LiveChart的开源者跟代码改进的贡献者们。也希望大家在wpf这块越来越好!

希望对大家有所帮助,还有什么问题可以在下方留言。谢谢!

修改LiveChart的提示显示位置的更多相关文章

  1. 【HOW】用PowerShell脚本修改用户配置文件属性显示次序

    首先将如下脚本保存为PowerShell文件,如:ReorderUserProfileProperty.ps1. 在执行此脚本时,如果不输入任何参数,将列出所有用户配置文件属性的名称和显示次序:如果只 ...

  2. WPF用ShowDialog()弹出窗体时控制该窗体的显示位置,并传值回父窗体

    原文:http://blog.csdn.net/kiss0622/article/details/5852153 方法一: 1.父窗口代码 Window1.xaml.cs private void B ...

  3. MSChart 设置饼图颜色 图例背景色 图例显示位置

    chartField.Series.Clear();            chartField.ChartAreas.Clear();            chartField.Legends.C ...

  4. actionMode - 在屏幕中的显示位置设置

    actionMode 默认的显示位置是在屏幕上方的,如果想要移到下方,可以添加如下属性 在AndroidManifest.xml 的activity中,做如下修改 <activity andro ...

  5. WPF DatePicker只显示年和月 修改:可以只显示年

    最近的项目,查询时只需要年和月,不需要日,因此需要对原有的DatePicker进行修改,查询了网上的内容,最终从一篇帖子里看到了添加附加属性的方法,地址是http://stackoverflow.co ...

  6. 使用Navicat修改SQLite数据库提示:no such collation sequence: LOCALIZED

    今天在修改Android应用里用到的一个SQLite数据库文件,使用Navicat修改SQLite数据库提示:“no such collation sequence: LOCALIZED”错误,折腾了 ...

  7. ArcGIS API for Silverlight 实现修改地图上的工程点位置

    原文:ArcGIS API for Silverlight 实现修改地图上的工程点位置 #region 处理工程点点击编辑相关事件 public Graphic editgraphics = null ...

  8. 修改DevExpress中英文提示,将英文改为中文

    1 : 修改DX 提示框中的英文字符 /// <summary> /// 重写DX弹出框 英文变为中文 /// </summary> public class CHS : De ...

  9. 设置Toast显示位置

    设置Toast显示位置 两个方法可以设置显示位置: 方法一:setGravity(int gravity, int xOffset, int yOffset)三个参数分别表示(起点位置,水平向右位移, ...

随机推荐

  1. myeclipse前端界面乱码

    框起来的值默认的格式是ISO-8859-1,改为UTF-8

  2. ElasticsSearch初装 环境Win10

    步骤: 1.从 http://how2j.cn/frontdownload?bean.id=1694 下载6.22 版本 2.双击elasticsearch.bat启动ElasticsSearch [ ...

  3. hadoop不能互相访问和linux防火墙守护进程

    前言——作为装过几次集群的菜鸟,对于hadoop集群的安装还是比较有心得的:只要配置文件够好,集群配置就非常容易,否则也容易出现莫名其妙的问题!总结了一份3台机器搭建较完好的集群的一份配置文件. 在我 ...

  4. 关于h5游戏开发,你想了解的一切都在这儿!

    ​2020年,受疫情影响,线下产业红利褪去,线上迎来的新一轮的高峰.众多商家纷纷抓住了转型时机,开启了流量争夺战.H5游戏定制无疑是今年引流的大热门.如何开发一款有趣.有爆点.用户爱买单的好游戏呢? ...

  5. matplotlib | Python强大的作图工具,让你从此驾驭图表

    今天是数据处理专题的第9篇文章,在之前的8篇文章当中我们已经介绍完了pandas这个库的一些基本用法,我们先把一些冷门的高级用法放一放,先来给大家介绍一下另外一个很有用的数据分析库--matplotl ...

  6. python的logging模块及应用

    一.logging日志模块等级 常见log级别从高到低: CRITICAL >ERROR >WARNING >INFO >DEBUG,默认等级为WARNING,即>=WA ...

  7. Django+pycharm+mysql 实现用户登录/注册(Django五)

    首先是让Django项目与mysql数据库初步建立连接 具体做法见:pycharm连接mysql(注意其中第二步MySQL驱动最好安装最新版的) 这里讲一下我在做这一步遇到的问题.一般Driver 那 ...

  8. DNS递归解析和迭代解析

    DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询, 递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询.其实DNS客户端和本地名称服务器是递归,而本地名称 ...

  9. 快速排序之C实现和JS实现的区别

    快速排序是面试中的几乎必问的问题,理解之后发现并不难,在此贴出两种版本,与小伙伴们相互交流 PS:今天码代码非常有感觉,所以连发三篇博客,下午打球,手感也是热的发烫,希望不忘初心,方得始终. 进入正题 ...

  10. 几个概念讲解Xaas

    saas:software as a service  SaaS平台是运营saas软件的平台.SaaS提供商为企业搭建信息化所需要的所有网络基础设施及软件.硬件运作平台,并负责所有前期的实施.后期的维 ...