ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

wpf-折线图绘制2-oxyplot-2

2021-09-24 10:02:46  阅读:284  来源: 互联网

标签:oxyplot LinearAxis 标签 放缩 坐标轴 刻度 折线图 wpf myController


上一篇在:wpf-折线图绘制2-oxyplot-1

设置图本身

IsLegendVisible = true; // 是否显示图例
PlotAreaBorderColor = OxyColors.Transparent; // 图边界的颜色

这些都是model层的设置,对应上一篇,就是_viewModel.SimplePlotModel的属性。

设置坐标轴

简单示例

LinearAxis xAxis = new LinearAxis() {
    Position = AxisPosition.Bottom, // 设置相对于图像的位置
    Minimum = 0,
    AbsoluteMinimum = 0, // 放缩的下界
    Maximum = 100,
    IsAxisVisible = true, 
    IsPanEnabled = false, // 是否能拖动
    IsZoomEnabled = false, // 是否能放缩
    TickStyle = TickStyle.None, // 刻度的样式。None表示不显示
    //MajorStep = 1,
    AxislineStyle = LineStyle.Solid, // 轴的样式
    AxislineColor = OxyColor.Parse("#9C9C9C"), // 轴的颜色
    AxislineThickness = 1, // 轴的粗细
};

坐标轴的设定请参考上一篇里链接的公共属性:
公共属性介绍

改变轴上标签的格式

比如我想只显示10, 20, 30, …这种,或者X1, X2, X3…这种。默认的话,轴显示的刻度是20, 40…(当然刻度会随放大缩小程度改变)。

因为我要显示的标签,仍然是与x值有关的,所以不能用CategoryAxis,因为会无法对齐图像。所以还是用LinearAxis,但修改LabelFormatter标签。这里使用delegate,x就是坐标轴的值,返回值是一个字符串,就是要显示在轴上的标签。可以根据x的值返回不同内字符串,以此实现对标签的内容控制。

LabelFormatter = delegate(double x) {
    return ""; // 只是举例,这样可以实现标签的隐藏
}, 

轴平移放缩和恢复触发的事件

AxisChangeTypes还有Pan和Reset。

yAxis.AxisChanged += (sender, e) => {
    if (e.ChangeType == AxisChangeTypes.Zoom) {
        ...
    }
};

控制

左键拖动

如果开启了平移和放大缩小,那么滚轮控制放大缩小,按住右键实现平移,左键负责点击事件。但有时希望按住左键实现拖动,那么这样修改。(然后点击事件不行了。。。)

var myController = new PlotController();
myController.UnbindMouseDown(OxyMouseButton.Right);
myController.BindMouseDown(OxyMouseButton.Left, PlotCommands.PanAt);
myPlot.Controller = myController;

其中前台有

<oxy:PlotView x:Name="myPlot"/>

标签:oxyplot,LinearAxis,标签,放缩,坐标轴,刻度,折线图,wpf,myController
来源: https://blog.csdn.net/pxy7896/article/details/120430239

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有