C# ScottPlot 绘图控件 源码阅读心得体会
public interface IPlottable
{
bool IsVisible { get; set; }
void Render(PlotDimensions dims, System.Drawing.Bitmap bmp, bool lowQuality = false); int XAxisIndex { get; set; }
int YAxisIndex { get; set; } /// <summary>
/// Returns items to show in the legend. Most plottables return a single item. in this array will appear in the legend.
/// Plottables which never appear in the legend can return null.
/// </summary>
LegendItem[] GetLegendItems(); /// <summary>
/// Return min and max of the horizontal and vertical data contained in this plottable.
/// Double.NaN is used for axes not containing data.
/// </summary>
/// <returns></returns>
AxisLimits GetAxisLimits(); /// <summary>
/// Throw InvalidOperationException if ciritical variables are null or have incorrect sizes.
/// Deep validation is slower but also checks every value for NaN and Infinity.
/// </summary>
void ValidateData(bool deep = false);
}
public SignalPlot AddSignal(double[] ys, double sampleRate = 1, Color? color = null, string label = null)
{
SignalPlot signal = new SignalPlot()
{
Ys = ys,
SampleRate = sampleRate,
Color = color ?? settings.GetNextColor(),
Label = label, // TODO: FIX THIS!!!
MinRenderIndex = 0,
MaxRenderIndex = ys.Length - 1,
};
Add(signal);
return signal;
}
最后在返回之前 ,这个Add(signal)会把这个对象加入到Plottables 集合中去 我们还可以添加很多元素,比如:
// plot the data
formsPlot1.Plot.AddScatter(xs, sin);
formsPlot1.Plot.AddScatter(xs, cos); // customize the axis labels
formsPlot1.Plot.Title("ScottPlot Quickstart");
formsPlot1.Plot.XLabel("Horizontal Axis");
formsPlot1.Plot.YLabel("Vertical Axis");
最后渲染的时候就用这个:formsPlot1.Refresh(); 它会调用Plot的 Render方法,这个方法会去遍历Plottables 这个集合,然后挨个用gdi画到bitmap上面去。 在formsPlot1控件里,有一个非常重要的类:【ControlBackEnd】,这里面有关于对图像 放大 缩小 移动 ,点击 的基本操作方法。 我们自己还可以注册这些事件写额外的代码 也不会影响。
C# ScottPlot 绘图控件 源码阅读心得体会的更多相关文章
- 很不错的安卓FadingActionBar控件源码
这个我刚刚从一个github下载过来的,自己测试一下运行了,感觉还不错的,安卓FadingActionBar控件源码,现在就给大家分享一下,源码我已经上传到源码天堂那里了,想下载的朋友可以去那里下载吧 ...
- Android控件源码分析--AndroidResideMenu菜单
说明 早上看到一篇文章介绍了ResideMenu得使用,这是一个类似SlidingMenu的控件,感觉有点高尚大,反正我之前没见过,本着凑热闹的好奇心,立马clone把玩下,项目地址奉上: https ...
- ThinkPhp 源码阅读心得
php 中header 函数 我可能见多了,只要用来跳转.今天在阅读TP源码的时候发现,header函数有第三个参数.有些困惑所以找到手册查阅下,发现 void header ( string $st ...
- breeze源码阅读心得
在阅读Spark ML源码的过程中,发现很多机器学习中的优化问题,都是直接调用breeze库解决的,因此拿来breeze源码想一探究竟.整体来看,breeze是一个用scala实现的基 ...
- mybatis源码阅读心得
第一天阅读源码及创建时序图.(第一次用prosson画时序图,挺丑..) 1. 调用 SqlSessionFactoryBuilder 对象的 build(inputStream) 方法: 2. ...
- Delphi IP 控件源码
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ComCtrls, Co ...
- commons-io源码阅读心得
FileCleanTracker: 开启一个守护线程在后台默默的删除文件. /* * Licensed to the Apache Software Foundation (ASF) under on ...
- 【原】AFNetworking源码阅读(四)
[原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ...
- 【原】AFNetworking源码阅读(一)
[原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...
- PaintView 绘图控件解析
博客地址:博客园,版权所有,转载须联系作者. GitHub地址:JustWeTools 最近做了个绘图的控件,实现了一些有趣的功能. 先上效果图: PaintView画图工具: 1.可直接使用设定按钮 ...
随机推荐
- 难道AI不知道tnsnames.ora的instance_name配置吗?
事情是这样,给某客户培训构建hands-on实验环境时,因测试环境有限,在同一环境做了一套ADG环境: 数据库是单实例,版本19.21,使用了多租户选件: 其中一个测试的PDB,名为demo1,其中建 ...
- 实例讲解昇腾 CANN YOLOV8 和 YOLOV9 适配
本文分享自华为云社区<昇腾 CANN YOLOV8 和 YOLOV9 适配>,作者:jackwangcumt. 1 概述 华为昇腾 CANN YOLOV8 推理示例 C++样例 , 是基于 ...
- c# webapi 自定义返回数据
前言 webapi呢,我们创建的时候我给我们5个方法:get get(data)put post delete. 很明显,get,get(data)是用来获取,post用来修改数据的,put,dele ...
- windows下redis主从配置
1,复制两个redis文件夹,粘贴在同级目录下 2,分别修改6380和6381文件夹中的redis.window.conf文件 port:分别改为6380.6381 均增加:slaveof 127.0 ...
- Node中的EventEmitter? 如何实现一个EventEmitter?
一.是什么 我们了解到,Node采用了事件驱动机制,而EventEmitter就是Node实现事件驱动的基础 在EventEmitter的基础上,Node几乎所有的模块都继承了这个类,这些模块拥有了自 ...
- 一文详解 Nacos 高可用特性
简介: 我今天介绍的 Nacos 高可用,是 Nacos 为了提升系统稳定性而采取的一系列手段.Nacos 的高可用不仅仅存在于服务端,同时也存在于客户端,以及一些与可用性相关的功能特性中,这些点组装 ...
- 与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面
简介:本次采访我将继续为大家详细讲解我的好伙伴:阿里巴巴的开源 Kubernetes 容器网络解决方案 hybridnet,以及我是如何借助它来构建混合云统一网络平面. 作者:若禾.昱晟.瑜佳 记者: ...
- Serverless 可观测性的过去、现在与未来
简介: 函数计算可观测性经历了 1.0 -> 2.0 的发展,从闭门造车的可观测发展成开源的可观测,从平台的可观测发展为开发者的可观测,从FaaS Only 的可观测演进成了云原生的可观测. 作 ...
- 业内首款云原生技术中台产品云原生 Stack 来了!
简介: 云原生 Stack 满足了各种典型场景下客户对于线下高集成平台的诉求,让企业数字话转型不受技术约束,专注业务本身,加速企业数字化迭代. 今天,企业数字化转型依然面临很大的挑战,虽然有很多新技术 ...
- WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来
本文将告诉大家如何在 WPF 或者其他 Win32 应用里面,在收到鼠标消息时,通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸消息提升而来 大家都知道,在不开启 W ...