问题:修改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. 非构造函数方式创建DbContext实例的方法

    using Microsoft.EntityFrameworkCore;using Microsoft.EntityFrameworkCore.Design;using Microsoft.Entit ...

  2. 汽车芯片如何高效符合ISO 26262功能安全标准

      汽车芯片和集成电路(IC)是高级驾驶员辅助系统(advanced driver assistance systems-ADAS)和联网自动驾驶汽车(connected autonomous veh ...

  3. 通过股票K线图来谈谈真正的技术和现实的技术

    开局一张图 这是一张股票日线图,上面记载这近期每个交易日该股的开盘价,收盘价,最高价,最低价. 有兴趣的人可以估算下数据量和表的设计,似乎有点工作量.可这还只是一部分,你还可以获得每日分时数据,成交量 ...

  4. Linux:安装禅道

    一.准备工作 禅道安装包ZenTaoPMS.8.1.3.zbox_64.gz,上传至服务器:rz命令 解压到指定目录  tar -zxvf ZenTaoPMS.8.1.3.zbox_64.gz -C ...

  5. python基础:日志模块logging,nnlog

    python里面用来打印日志的模块,就是logging模块,logging模块可以在控制台打印日志,也可以写入文件中.也可以两个操作都执行 1.控制台输入 import logging#导入模块 lo ...

  6. 【吴恩达课程使用】keras cpu版安装【接】- anaconda (python 3.7) win10安装 tensorflow 1.8 cpu版

    一.确认tensorflow的版本: 接上一条tensorflow的安装,注意版本不匹配会出现很多问题!:[吴恩达课程使用]anaconda (python 3.7) win10安装 tensorfl ...

  7. linux 字符驱动框架(用户态的read,write,poll是怎么操作驱动的)

    前言 这篇文章是通过对一个简单字符设备驱动的操作来解释,用户态的读写操作是怎么映射到具体设备的. 因为针对不同版本的linux内核,驱动的接口函数一直有变化,这贴出我测试的系统信息: root@ubu ...

  8. [程序员代码面试指南]递归和动态规划-最长公共子串问题(DP,LCST)

    问题描述 如题. 例:输入两个字符串 str1="1AB234",str2="1234EF" ,应输出最长公共子串"234". 解题思路 状 ...

  9. 基于JavaScript的表格设计:按序添加或删除班级的学生信息

    目的: 制作一个表格,显示班级的学生信息 功能: 鼠标移到不同行,背景色发生改变,离开恢复原背景色 添加.删除按钮,可添加,可删除. 程序流程: 首先先建立绑定事件函数. 其次建立鼠标移动改变背景色函 ...

  10. netty之handler read

    有时候会有一系列的处理in的handler,使用fireChannelRead处理传递 转载自https://blog.csdn.net/u011702633/article/details/8205 ...