ScottPlot学习的常用笔记-02
- 写在前面
- Why&Target:这里记一些杂项。
- 上下文&背景
- 先记一下这几个小时的新收获
- 先说一下,为什么可开发可视工具
- 缩放的问题
- ScottPlot5.0起步
- .net Core: WinExe
- .Net Framework也是可以的
写在前面
Why&Target:这里记一些杂项。
其中一个原因,是记录下在初学时,面对多种维度的选择相关的选择困难时的尝试。
上下文&背景
今天是周五了,一周的紧张的工作,算是提前实现我认为的目标。一方面,为下周准备,一方面,思考一下有哪些地方,走马观花,只是拿来用,却没有细细品味的地方。
其中一个是边学边用的ScottPlot,有许多地方没有搞清楚。
所以,花了点时间总结了一下。
先记一下这几个小时的新收获
1。 如果不需要编译源码,而是直接用NuGet管理器,vs2019与vs2022区别不大。
当然,如果您要下载ScottPlot的源码自己进行编译,那么,最好用vs2022,vs2019似乎相当困难。
这种情况,大家容易理解。以前有人写过一些书,讨论过,编写类库与编普通程序有什么不同。
类库相当于服务的提供方,它必须是大而全的,因为客户总是需要的比他自己实际需要得多;
因为这样,类库的代码往往也会引入许多各种类库,从而导致其构建过程越来越困难。
以前我维护过gcc,gdb之类的toolchain,我们的编译环境,一般几年也不会升一次级。
但如果,只是用人家做好的binary,则一般就简单多了。用vs2019还是2022目前来看,差别不大。
所以,这里我不是要反悔上篇中说的内容。
2。 关于Zoom。放大缩小的功能,原来是控件中自带的,不论是4.1还是5.0都是一样的。
是右键和中键。这个把我整得有些地语了。。。
我一个机电专业的工科生,刚毕业最熟就是AutoCAD,也不清楚,是不是习惯了那种橡皮筋的方式放大,我就没想到是右键。
这事,为什么我这么感慨,是因为,事先不知道,周三需要演示成果,我自己写了一个放大的功能。。。
结果刚刚到网上详细找了找,原来是自带的。。。但确实是以一种我没有想到的方式。好吧。
3。5。0的初步。 4.1已初步使用过。
一会我们讲讲5。0的起步。
先说一下,为什么可开发可视工具
这个应访单写一篇文章,但就写在这吧。因为这种逻辑我心里比较清楚。
其它人,是否认同是他们的问题,是吧。
一般来说,中国的老板,是信高手不信工具。
他们更信“高手”,而不是技术。
这其实是一种神文主义:把一个具体的人,物化成一个全知全能的“高手”。这时这个"高手”已不是人。
下次有人说你是高手时,你要小心,这人没把你当人。
全知全能,这个单词,请问,在人文书里有吗?
但你去应聘时,你会发现,你对面的老板就这个逻辑。
遇到这样的但是,为了生计,你也可能要留下来。
但你必须要聪明地来做事。其中一个就是依赖工具。
目前,我要定位系统性能问题,这个问题,可能是我凭借经验能定位出来的,但我不会这么做。
因为:
(1)没有一个人,会喜欢听到你说他写的代码性能不足的!
(2)每个人,都会利用降低其它人的模块的性能来加强自己的性能,牺牲大家成就小我,是我们大家的共同心愿。
没有工具,你就是打地鼠那个人,翘翘板效应,能把你累到怀疑人生。
也就是这工具,是给我自己用的。
在目标代码中,加入了我用于定位的probe,然后开发了工具,我自己用。
但给出的图形,却是每个人无法以:我看不懂,来抵赖的。
但后果是你要坚持和强硬。作系统分析,没有硬心肠是不行的。老板都是急于要成果,你但必须情楚,事情到这一步,一定是之前欠账很多。如果容易解决,别人早搞定了。
如果有“高手”能解决,也轮不到你登场。如果你认为,自己就是那个绝世高手,那你可要小心了。
工欲善其事,必先利其器。
缩放的问题
为了达到更好的展示效果,虽然我只写了这个工具的冰水一角,我还是想把缩放做得好一点。
上图中,我还加了个checkbox,用于缩说,虽不成功,但也将就用。
但是刚刚我去网上找了找,结果是让我崩溃的,因为本来ScottPlot就有这功能,而且不论是4.1还是5.0都有。
见这个issue 90
https://github.com/ScottPlot/ScottPlot/issues/90
我在这理解了好半天,middle-click,
然后我试了一下,鼠标的中键确是可以缩放的!
两个版本都试过了,没有差别。
这个就不上图了。大家可以自己试一下。
这事,让我很有些恼火。
ScottPlot5.0起步
只是起步,谈不上入门
1。 之前提到vs2022和 vs2019都可以。所以,这里只用vs2022来说明。
由于网上有一些文章,我不重复了。
简要说明如下:
工程可以选
.NetApp,然后加入.netFrame的控件:
.net Core: WinExe
工程如下
.Net Framework也是可以的
缺点是,不能在DesignTime显示。
不过这还真是无所谓。
运行起来就可能看到:
不论是vs2019还是vs2022都相同效果。
但是ScottPlot 4.*版本,没有这个问题。
最简单的示例代码如下:
.net APP
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WinFormsApp1SPlot5
{public partial class LineChart : Form{public LineChart(){InitializeComponent();}private void LineChart_Load(object sender, EventArgs e){double[] dataX = GetRandomNum(20).Distinct().OrderByDescending(x => x).ToArray();double[] dataY = GetRandomNum(19).Distinct().OrderByDescending(x => x).ToArray();formsPlot1.Plot.Add.Scatter(dataX, dataY);formsPlot1.Refresh();}public double[] GetRandomNum(int length){double[] getDate = new double[length];Random random = new Random(); //创建一个Random实例for (int i = 0; i < length; i++){getDate[i] = random.Next(1, 100); //使用同一个Random实例生成随机数}return getDate;}}
}