ScottPlot图标控件的使用

news2024/12/23 5:04:52

效果图在这里插入图片描述

控件获取方法

Nugget
ScottPlot.WinForms

参考代码

Form1.Designer.cs


namespace ScottplotDemo
{
    partial class Form1
    {
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows 窗体设计器生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要修改
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.formsPlot1 = new ScottPlot.FormsPlot();
            this.cbZoomable = new System.Windows.Forms.CheckBox();
            this.cbLockHorizontal = new System.Windows.Forms.CheckBox();
            this.cbLockVertical = new System.Windows.Forms.CheckBox();
            this.CrosshaircheckBox = new System.Windows.Forms.CheckBox();
            this.PixelLabel = new System.Windows.Forms.Label();
            this.XCoordinateLabel = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // formsPlot1
            // 
            this.formsPlot1.Location = new System.Drawing.Point(5, 79);
            this.formsPlot1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.formsPlot1.Name = "formsPlot1";
            this.formsPlot1.Size = new System.Drawing.Size(785, 428);
            this.formsPlot1.TabIndex = 0;
            this.formsPlot1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.formsPlot1_MouseMove);
            // 
            // cbZoomable
            // 
            this.cbZoomable.AutoSize = true;
            this.cbZoomable.Location = new System.Drawing.Point(12, 30);
            this.cbZoomable.Name = "cbZoomable";
            this.cbZoomable.Size = new System.Drawing.Size(96, 16);
            this.cbZoomable.TabIndex = 1;
            this.cbZoomable.Text = "锁定鼠标缩放";
            this.cbZoomable.UseVisualStyleBackColor = true;
            this.cbZoomable.CheckedChanged += new System.EventHandler(this.cbZoomable_CheckedChanged);
            // 
            // cbLockHorizontal
            // 
            this.cbLockHorizontal.AutoSize = true;
            this.cbLockHorizontal.Location = new System.Drawing.Point(119, 30);
            this.cbLockHorizontal.Name = "cbLockHorizontal";
            this.cbLockHorizontal.Size = new System.Drawing.Size(96, 16);
            this.cbLockHorizontal.TabIndex = 1;
            this.cbLockHorizontal.Text = "锁定水平缩放";
            this.cbLockHorizontal.UseVisualStyleBackColor = true;
            this.cbLockHorizontal.CheckedChanged += new System.EventHandler(this.cbLockHorizontal_CheckedChanged);
            // 
            // cbLockVertical
            // 
            this.cbLockVertical.AutoSize = true;
            this.cbLockVertical.Location = new System.Drawing.Point(119, 52);
            this.cbLockVertical.Name = "cbLockVertical";
            this.cbLockVertical.Size = new System.Drawing.Size(96, 16);
            this.cbLockVertical.TabIndex = 1;
            this.cbLockVertical.Text = "锁定垂直缩放";
            this.cbLockVertical.UseVisualStyleBackColor = true;
            this.cbLockVertical.CheckedChanged += new System.EventHandler(this.cbLockVertical_CheckedChanged);
            // 
            // CrosshaircheckBox
            // 
            this.CrosshaircheckBox.AutoSize = true;
            this.CrosshaircheckBox.Location = new System.Drawing.Point(248, 30);
            this.CrosshaircheckBox.Name = "CrosshaircheckBox";
            this.CrosshaircheckBox.Size = new System.Drawing.Size(72, 16);
            this.CrosshaircheckBox.TabIndex = 1;
            this.CrosshaircheckBox.Text = "十字光标";
            this.CrosshaircheckBox.UseVisualStyleBackColor = true;
            this.CrosshaircheckBox.CheckedChanged += new System.EventHandler(this.cbLockHorizontal_CheckedChanged);
            // 
            // PixelLabel
            // 
            this.PixelLabel.AutoSize = true;
            this.PixelLabel.Location = new System.Drawing.Point(3, 527);
            this.PixelLabel.Name = "PixelLabel";
            this.PixelLabel.Size = new System.Drawing.Size(29, 12);
            this.PixelLabel.TabIndex = 2;
            this.PixelLabel.Text = "null";
            // 
            // XCoordinateLabel
            // 
            this.XCoordinateLabel.AutoSize = true;
            this.XCoordinateLabel.Location = new System.Drawing.Point(246, 527);
            this.XCoordinateLabel.Name = "XCoordinateLabel";
            this.XCoordinateLabel.Size = new System.Drawing.Size(29, 12);
            this.XCoordinateLabel.TabIndex = 2;
            this.XCoordinateLabel.Text = "null";
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(800, 548);
            this.Controls.Add(this.XCoordinateLabel);
            this.Controls.Add(this.PixelLabel);
            this.Controls.Add(this.cbLockVertical);
            this.Controls.Add(this.CrosshaircheckBox);
            this.Controls.Add(this.cbLockHorizontal);
            this.Controls.Add(this.cbZoomable);
            this.Controls.Add(this.formsPlot1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private ScottPlot.FormsPlot formsPlot1;
        private System.Windows.Forms.CheckBox cbZoomable;
        private System.Windows.Forms.CheckBox cbLockHorizontal;
        private System.Windows.Forms.CheckBox cbLockVertical;
        private System.Windows.Forms.CheckBox CrosshaircheckBox;
        private System.Windows.Forms.Label PixelLabel;
        private System.Windows.Forms.Label XCoordinateLabel;
    }
}


Form1

using ScottPlot;
using ScottPlot.Plottable;
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 ScottplotDemo
{
    public partial class Form1 : Form
    {
        private readonly Crosshair Crosshair;
        public Form1()
        {
            InitializeComponent();
            var plt = formsPlot1.Plot;

            // sample data
            //X轴数据
            double[] xs = DataGen.Consecutive(5100);

            //Y轴数据
            double[] sin = DataGen.Sin(5100);
            double[] cos = DataGen.Cos(5100);

            // 2条曲线
            plt.AddScatter(xs, sin);
            plt.AddScatter(xs, cos);

            // plot参数设置
            plt.Title("标题");
            plt.XLabel("X轴");
            plt.YLabel("Y轴");

            //添加十字光标线
            Crosshair = this.formsPlot1.Plot.AddCrosshair(0.0, 0.0);
            formsPlot1.Refresh();
        }

        private void cbZoomable_CheckedChanged(object sender, EventArgs e)
        {
            //鼠标右键拖拽缩放
            formsPlot1.Configuration.RightClickDragZoom = !cbZoomable.Checked;
            //鼠标管轮缩放
            formsPlot1.Configuration.ScrollWheelZoom = !cbZoomable.Checked;
        }

        private void cbLockHorizontal_CheckedChanged(object sender, EventArgs e)
        {
            //锁定水平缩放
            formsPlot1.Configuration.LockHorizontalAxis = cbLockHorizontal.Checked;
        }

        private void cbLockVertical_CheckedChanged(object sender, EventArgs e)
        {
            //锁定垂直缩放
            formsPlot1.Configuration.LockVerticalAxis = cbLockVertical.Checked;
        }

        private void formsPlot1_MouseMove(object sender, MouseEventArgs e)
        {
            if (CrosshaircheckBox.Checked)
            {
                ValueTuple<double, double> mouseCoordinates = this.formsPlot1.GetMouseCoordinates();
                double coordinateX = mouseCoordinates.Item1;
                double coordinateY = mouseCoordinates.Item2;
                PixelLabel.Text = $"{e.X.ToString("0.00000")},{e.Y.ToString("0.00000")}";
                XCoordinateLabel.Text = $"{coordinateX.ToString("0.00000000")},{coordinateY.ToString("0.00000000")}";
                Crosshair.X = coordinateX;
                Crosshair.Y = coordinateY;
            }

            //this.XPixelLabel.Location = new System.Drawing.Point(e.X, e.Y);

            //如果设置十字光标线为不显示数值就不显示了
            if (!CrosshaircheckBox.Checked)
            {
                this.PixelLabel.Text = "";
                this.XCoordinateLabel.Text = "";
            }

            this.formsPlot1.Refresh(false, false);
        }
    }
}

注意事项

ScottPlot开源库的依赖库,避免与原有项目中依赖库冲突
如:“System.Threading.dll”等都是.net常用库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/950685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《动手学深度学习》-57长短期记忆网络LSTM

沐神版《动手学深度学习》学习笔记&#xff0c;记录学习过程&#xff0c;详细的内容请大家购买书籍查阅。 b站视频链接 开源教程链接 长短期记忆网络&#xff08;LSTM&#xff09; 长期以来&#xff0c;隐变量模型存在长期信息保存和短期输入缺失的问题。解决这一问题的最早…

bazel入门学习笔记

简介 Bazel Google开源的&#xff0c;是一款与 Make、Maven 和 Gradle 类似的开源构建和测试工具。 它使用人类可读的高级构建语言。Bazel 支持多种语言的项目&#xff0c;可为多个平台构建输出。Bazel支持任意大小的构建目标&#xff0c;并支持跨多个代码库和大量用户的大型代…

webpack loader和plugins的区别

在Webpack中&#xff0c;Loader和Plugin是两个不同的概念&#xff0c;用于不同的目的。 Loader是用于处理非JavaScript模块的文件的转换工具。它们将文件作为输入&#xff0c;并将其转换为Webpack可以处理的模块。例如&#xff0c;当您在Webpack配置中使用Babel Loader时&…

深入浅出AXI协议(3)——握手过程

一、前言 在之前的文章中我们快速地浏览了一下AXI4协议中的接口信号&#xff0c;对此我们建议先有一个简单的认知&#xff0c;接下来在使用到的时候我们还会对各种信号进行一个详细的讲解&#xff0c;在这篇文章中我们将讲述AXI协议的握手协议。 二、握手协议概述 在前面的文章…

文具寄到墨西哥可以走墨西哥专线吗?

文具寄到墨西哥可以选择墨西哥专线进行运输。墨西哥专线是一种专门为墨西哥进口货物提供的物流服务&#xff0c;其优势在于能够提供快速、高效和可靠的运输服务&#xff0c;以及专业的清关和包税服务。 1.墨西哥专线可以提供快速的运输服务。 一般而言&#xff0c;墨西哥专线的…

Mysql中九种索引失效场景分析

表数据&#xff1a; 索引情况&#xff1a; 其中a是主键&#xff0c;对应主键索引&#xff0c;bcd三个字段组成联合索引&#xff0c;e字段为一个索引 情况一&#xff1a;不符合最左匹配原则 去掉b1的条件后就不符合最左匹配原则了&#xff0c;导致索引失效 情况二&#xff…

从LeakCanary看内存快照解析

在从LeakCanary看内存快照生成一节中&#xff0c;我们已经了解了hprof的生成&#xff0c;并且将生成的hprof文件通过Android Studio进行解析&#xff0c;确实发现了内存泄漏对象MainActivity&#xff0c;但是在实际开发中&#xff0c;要求开发者自己去手动pull hprof文件进行解…

应急物资管理系统|智物资DW-S300提升应急响应能力

项目背景 智慧应急物资管理系统&#xff08;智装备DW-S300&#xff09;是一套成熟系统&#xff0c;依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 本项目采用东识智慧应急物资管理…

ubuntu系统安装tensorRT-8.6.1版本(2023-8月最新版)

目录 前言pip安装可能出现的报错&#xff1a; tar.gz安装 前言 看了无数教程和b站视频&#xff0c;啊啊啊啊啊啊啊啊啊啊啊tensorRT要我狗命啊。我要写全网tensorRT最全的博客!!! 总体来说成功安装方式有两种&#xff0c;pip安装和tar.gz安装&#xff08;其实官网安装方式居多…

d3dx9_29.dll丢失如何修复?dll修复工具下载方法

大家好&#xff01;今天&#xff0c;我将为大家介绍一个与我们日常生活息息相关的话题——电脑d3dx9_29.dll丢失的6种修复方法。作为一名计算机专业的学生&#xff0c;我深知这个文件对我们电脑运行的重要性。在接下来的时间里&#xff0c;我将带领大家了解d3dx9_29.dll的作用、…

C#关于WebService中File.Exists()处理远程路径的异常记录

目录 前言方案一打开网站对应的程序池的高级设置按下图步骤设置凭据重启网站若方案一未能解决&#xff0c;请继续尝试方案二&#x1f447; 方案二从控制面板进入到 凭据管理器为windows凭据添加凭据点击**Windows凭据**&#xff0c;并点击**添加Windows凭据**键入远程路径的地址…

Java之API详解之Biginteger类的详解

6 BigInteger类 6.1 引入 平时在存储整数的时候&#xff0c;Java中默认是int类型&#xff0c;int类型有取值范围&#xff1a;-2147483648 ~ 2147483647。如果数字过大&#xff0c;我们可以使用long类型&#xff0c;但是如果long类型也表示不下怎么办呢&#xff1f; 就需要用…

DC-DC 升压电路、 升压模块原理

一、什么是 DC-DC 转换器&#xff1f; DC-DC 转换器是一种电力电子电路&#xff0c;可有效地将直流电从一个电压转换为另一个电压。 DC-DC 转换器在现代电子产品中扮演着不可或缺的角色。这是因为与线性稳压器相比&#xff0c;它们具有多项优势。尤其是线性稳压器会散发大量热量…

全民健康生活方式行动日,天猫健康联合三诺生物推出“15天持续测糖计划”

糖尿病是全球高发慢性病中患病人数增长最快的疾病&#xff0c;是导致心血管疾病、失明、肾衰竭以及截肢等重大疾病的主要病因之一。目前中国有近1.4亿成人糖尿病患者&#xff0c;科学的血糖监测和健康管理对于糖尿病患者来说至关重要。 在9月1日全民健康生活方式行动日前夕&am…

Shell编程之运算符

目录 算数运算符 关系运算符 文件运算符 逻辑运算符 算数运算符 注意&#xff1a; 原生bash不支持简单的数学运算&#xff0c;但是可以通过其他命令来实现&#xff0c; 例如 expr 常用算数运算符 加-减*乘/除%取余 示例如下&#xff1a; A2 B3 expr $[$A$B] expr $[$A-$…

C语言的数据类型简介

一、基本类型 &#xff08;1&#xff09;六种基本类型 **字符串常量和字符常量的不同 1&#xff09;‘a’为字符常量&#xff0c;”a”为字符串常量 2&#xff09;每个字符串的结尾&#xff0c;编译器会自动添加一个结束标志位‘\0’ “a”包含两个字符’a’和’\0’ &#x…

FPGA优质开源项目 – UDP万兆光纤以太网通信

本文开源一个FPGA项目&#xff1a;UDP万兆光通信。该项目实现了万兆光纤以太网数据回环传输功能。Vivado工程代码结构和之前开源的《UDP RGMII千兆以太网》类似&#xff0c;只不过万兆以太网是调用了Xilinx的10G Ethernet Subsystem IP核实现。 下面围绕该IP核的使用、用户接口…

Qt6.5安装教程——国内源

为什么离线包没了&#xff1f; Qt6开始非商业授权下&#xff0c;不再提供离线安装方式的exe&#xff0c;但源码安装费时费力&#xff0c;所以推荐安装方式已经为在线组件安装方式&#xff0c;包括vs2022、Qt在线安装工具已经成为开发工具新的安装趋势。 Qt是不是要放弃开源&…

服务器日志出现大量NTLM(NT LAN Manager)攻击

日志名称:Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/8/30 20:57:40 事件 ID:4625 任务类别:登录 级别: 信息 关键字: 审核失败 用户: 暂缺 计算机: WIN-QBJ3ORTR0CF 描述: 帐户登录失败。 主题: 安全 ID:NULL SID 帐户名:- 帐户域:- …

【软考】系统集成项目管理工程师(二)信息系统服务管理【2分】

一、信息技术服务标准 1、组成要素 组成要素描述人员提供IT服务所需的人员及其知识、经验和技能要求【正确选人】流程提供IT服务时&#xff0c;合理利用必要的资源&#xff0c;将输入转化为输出的一组相互关联和结构化的活动【正确做事】技术交付满足质量要求的IT服务应使用的…