问题:修改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. JsonAnalyzer2 1.01版

    本版的改进主要在字符串的处理,前版不允许出现[]{},:等,现在都可以了,做出的修改主要在Lexer类,另外Token类增加1了下标,TreeBuilder类的不合语法处也做出一定修改. 测试用例:h ...

  2. 极简显示sessionid的jsp程序 war下载

    下载地址:https://files.cnblogs.com/files/xiandedanteng/simpleJspSessionId20200103.zip 解压后得到myweb.war就是可以 ...

  3. java 将本地文件或网络文件与base64互相转换

    一:将网络文件转为Base64 将文件转为base64 public static String fileToBase64(String url){ int byteread = 0; String ...

  4. leetcode刷题-80.删除排序数组中的重复项 II

    题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. ...

  5. 详细教程丨使用Prometheus和Thanos进行高可用K8S监控

    本文转自Rancher Labs 介 绍 Prometheus高可用的必要性 在过去的几年里,Kubernetes的采用量增长了数倍.很明显,Kubernetes是容器编排的不二选择.与此同时,Pro ...

  6. JavaScript浮点数及其运算

    .普及两个函数Math.pow(底数,几次方)Number.toFixed(小数位数)2.浮点数相加function accAdd(arg1,arg2){   var r1,r2,m;   try{r ...

  7. js垃圾回收和内存泄漏

    js垃圾回收和内存泄漏 js垃圾回收 Js具有自动垃圾回收机制.垃圾收集器会按照固定的时间间隔周期性的执行. 1.标记清除(常用) 工作原理:是当变量进入环境时,将这个变量标记为"进入环境& ...

  8. UI中列表

    1.ul.ol.dl

  9. maven-shade-plugin插件未生效原因分析

    今天在项目的pom文件中引入maven-shade-plugin插件,构建一个uber-jar(包含所有依赖的jar包),但是诡异的事情出现了,执行mvn package后生成的jar包竟然没有包含被 ...

  10. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(6)

    前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>,<Git+Gitlab+An ...