C# chart绘图 鼠标响应

这篇具有很好参考价值的文章主要介绍了C# chart绘图 鼠标响应。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、图形自动滚动设置

chart1.ChartAreas[0].AxisX.Maximum 横坐标显示区域最大值

chart1.ChartAreas[0].AxisX.Minimum 横坐标显示区域最小值

显示宽度 = chart1.ChartAreas[0].AxisX.Maximum - chart1.ChartAreas[0].AxisX.Minimum

            chart1.ChartAreas[0].AxisX.Maximum = x_data;
            if (x_data > AaxisXScrollNum)
            {
                chart1.ChartAreas[0].AxisX.Minimum = x_data - AaxisXScrollNum;
            }
            else
            {
                chart1.ChartAreas[0].AxisX.Minimum = 0;
            }

2、图形移动

chart1.ChartAreas[0].AxisX.ScaleView.Position   X轴相对于起始点被移动的距离

chart1.ChartAreas[0].AxisY.ScaleView.Position   Y轴相对于起始点被移动的距离

3、图表缩放

chart1.ChartAreas[0].AxisX.ScaleView.Size  X轴在原基础上的缩放比列

chart1.ChartAreas[0].AxisX.ScaleView.Size Y轴在原基础上的缩放比列

4、坐标轴显示格式

chart1.ChartAreas[0].AxisX.LabelStyle.Format = "N1";  //限制X轴标签显示浮点数一位小数
chart1.ChartAreas[0].AxisY.LabelStyle.Format = "N1"; //限制Y轴标签显示浮点数一位小数

5、显示效果

C# chart绘图 鼠标响应

代码上一波,方便以后复制文章来源地址https://www.toymoban.com/news/detail-489487.html

 
        /// <summary>
        /// 图标数据刷新
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            x_data += 1;
            double y = Math.Sin(x_data * Math.PI / 180.0);

            chart1.ChartAreas[0].AxisX.Maximum = x_data;
            if (x_data > AaxisXScrollNum)  //调整显示区域跟随
            {
                chart1.ChartAreas[0].AxisX.Minimum = x_data - AaxisXScrollNum;
            }
            else
            {
                chart1.ChartAreas[0].AxisX.Minimum = 0;
            }
            chart1.Series[0].Points.AddXY(x_data, y);
        }

        double x_data = 0;
        private void button4_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 360 * 2; i++)
            {
                x_data += 1;
                double y = Math.Sin(i * Math.PI / 180.0);
                chart1.Series[0].Points.AddXY(x_data, y);

            }
        }

        public bool isMouseDown = false;
        public int lastMove = 0; // 用于记录鼠标上次移动的点,用于判断是左移还是右移

 
        double mouseDownPosX, mouseRateX;
        int mouseDownXoldX, mouseDownxNewX;

        double mouseDownPosY, mouseRateY;
        int mouseDownXoldY, mouseDownxNewY;

        #region 鼠标移动效果
        private void chart1_MouseUp(object sender, MouseEventArgs e)
        {
            IsMoveChart = false;

        }
        bool IsMoveChart;
        private void chart1_MouseDown(object sender, MouseEventArgs e)
        {
            //  if (checkBox1.Checked)
            {
                mouseDownPosX = chart1.ChartAreas[0].AxisX.ScaleView.Position;
                mouseDownXoldX = e.X;
                mouseRateX = chart1.ChartAreas[0].AxisX.PixelPositionToValue(2) - chart1.ChartAreas[0].AxisX.PixelPositionToValue(1);
                IsMoveChart = true;
            }

            //   if (checkBox2.Checked)
            {
                mouseDownPosY = chart1.ChartAreas[0].AxisY.ScaleView.Position;
                mouseDownXoldY = e.Y;
                mouseRateY = chart1.ChartAreas[0].AxisY.PixelPositionToValue(2) - chart1.ChartAreas[0].AxisY.PixelPositionToValue(1);
                IsMoveChart = true;
            }

        }
        /// <summary>
        /// 精确随鼠标移动
        /// </summary>
        private void chart1_MouseMove(object sender, MouseEventArgs e)
        {
            if (IsMoveChart)
            {
                //  if (checkBox1.Checked)
                {
                    mouseDownxNewX = e.X;
                    chart1.ChartAreas[0].AxisX.ScaleView.Position = mouseDownPosX + (mouseDownXoldX - mouseDownxNewX) * mouseRateX;
                }

                //    if (checkBox2.Checked)
                {
                    mouseDownxNewY = e.Y;
                    chart1.ChartAreas[0].AxisY.ScaleView.Position = mouseDownPosY + (mouseDownXoldY - mouseDownxNewY) * mouseRateY;

                }

                Text = "SCA:" + chart1.ChartAreas[0].AxisX.ScaleView.Size + " " + chart1.ChartAreas[0].AxisY.ScaleView.Size + "   POS:" + chart1.ChartAreas[0].AxisX.ScaleView.Position + " " + chart1.ChartAreas[0].AxisY.ScaleView.Position;

            }
        }

        #endregion

        #region 鼠标缩放效果

        /// <summary>
        /// 以鼠标中心缩放大小
        /// </summary>
        private void ResetPosVal(MouseEventArgs e)
        {
            if (checkBox3.Checked)
            {
                double newSizeXz = 0;//     
                if (e.Delta < 0) //设定放大或者缩小范围
                {
                    newSizeXz = chart1.ChartAreas[0].AxisX.ScaleView.Size * 1.2f;
                }
                else
                {
                    newSizeXz = chart1.ChartAreas[0].AxisX.ScaleView.Size * 0.8f;
                }
                if (newSizeXz > 0)
                {
                    double xMouseNew;
                    double xMouseOld = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X);
                    chart1.ChartAreas[0].AxisX.ScaleView.Size = newSizeXz;
                    xMouseNew = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X);
                    double newPosition = xMouseOld - xMouseNew;
                    chart1.ChartAreas[0].AxisX.ScaleView.Position += Math.Round(newPosition, 3);
                }
            }

            if (checkBox4.Checked)
            {

                double newSizeYz = 0;//     
                if (e.Delta < 0) //设定放大或者缩小范围
                {
                    newSizeYz = chart1.ChartAreas[0].AxisY.ScaleView.Size * 1.2f;
                }
                else
                {
                    newSizeYz = chart1.ChartAreas[0].AxisY.ScaleView.Size * 0.8f;
                }
                if (newSizeYz > 0)
                {
                    double xMouseNew;
                    double xMouseOld = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Y);
                    chart1.ChartAreas[0].AxisY.ScaleView.Size = newSizeYz;
                    xMouseNew = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Y);
                    double newPosition = xMouseOld - xMouseNew;
                    chart1.ChartAreas[0].AxisY.ScaleView.Position += Math.Round(newPosition, 3);
                }
            }

            Text = "SCA:" + chart1.ChartAreas[0].AxisX.ScaleView.Size + " " + chart1.ChartAreas[0].AxisY.ScaleView.Size + "   POS:" + chart1.ChartAreas[0].AxisX.ScaleView.Position + " " + chart1.ChartAreas[0].AxisY.ScaleView.Position;

        }

        #endregion


        /// <summary>
        /// 恢复缩放位置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button7_Click(object sender, EventArgs e)
        {

            chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset(0);
            chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset(0);

            Text = "SCA:" + chart1.ChartAreas[0].AxisX.ScaleView.Size + " " + chart1.ChartAreas[0].AxisY.ScaleView.Size + "   POS:" + chart1.ChartAreas[0].AxisX.ScaleView.Position + " " + chart1.ChartAreas[0].AxisY.ScaleView.Position;

            timer1.Start();

        }

        /// <summary>
        /// 鼠标移动事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void chart1_MouseWheel(object sender, MouseEventArgs e)
        {
            ResetPosVal(e);
        }

        /// <summary>
        /// 停止数据更新
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button8_Click(object sender, EventArgs e)
        {

            timer1.Stop();
 
            // 设置不显示chart自带的滚动条
            chart1.ChartAreas[0].AxisX.ScrollBar.Enabled = false;
            chart1.ChartAreas[0].AxisY.ScrollBar.Enabled = false;

            chart1.ChartAreas[0].AxisY.ScaleView.Size = chart1.ChartAreas[0].AxisY.ScaleView.ViewMaximum - chart1.ChartAreas[0].AxisY.ScaleView.ViewMinimum;
            chart1.ChartAreas[0].AxisX.ScaleView.Size = chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum - chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum;


            Text = "SCA:" + chart1.ChartAreas[0].AxisX.ScaleView.Size + " " + chart1.ChartAreas[0].AxisY.ScaleView.Size + "POS:" + chart1.ChartAreas[0].AxisX.ScaleView.Position + " " + chart1.ChartAreas[0].AxisY.ScaleView.Position;


        }

到了这里,关于C# chart绘图 鼠标响应的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#使用SnsSharp实现鼠标键盘钩子,实现全局按键响应

    CSDN下载地址:https://download.csdn.net/download/sns1991sns/88041637 gitee下载地址:https://gitee.com/linsns/snssharp 一、键盘事件,使用 SnsKeyboardHook 按键事件共有3个:         KeyDown (按键按下)                 KeyUp (按键松开)                  KeyPress (按键按下并松开) 以

    2024年02月14日
    浏览(44)
  • vue自动滚动组件 可以支持鼠标滚轮操作

    vue自动滚动组件 可以支持鼠标滚轮操作

    2024年02月10日
    浏览(45)
  • Pycharm通过设置实现ctrl+滚动鼠标滑轮缩放字体大小

    正常情况下,pycharm里面的字体大小需要设置才会改变,而不能直接用ctrl和鼠标滑轮来控制字体大小,这很不方便,这里和大伙分享通过设置就能利用ctrl+鼠标滑轮改变字体大小的方法。 首先,选择文件,设置  选择按键映射,然后在搜索框输入  increase,然后再增大字体大小

    2024年02月11日
    浏览(132)
  • matlab/simulink鼠标滚动设置成上下移动而不是缩放

    simulink一个我很不喜欢的功能是,鼠标滚动会让画面缩放而不是上下滚动,今天实在受不了了就把它改过来了,其实特别简单,半分钟就搞定~ 点击File,选择Simulink Preferences 选择editor,把Scroll wheel controls zooming(滚轮控制缩放)前面默认的勾选取消掉 完成!之后页面的缩放就

    2024年02月13日
    浏览(132)
  • Mac下独立设置触控板和鼠标的滚动方向

    新入手MacBook Pro,触控板很灵敏,各种手势功能也很强大,不过长时间在板子上摸,指头不舒服,还是外接一个鼠标吧。 微软3600蓝牙鼠标,无需接收器,干净利索,熟悉的手感回来了,不过鼠标滚轮方向和Windows系统中的是相反的,很别扭,虽然可以通过在 系统偏好设置-鼠标

    2024年02月12日
    浏览(222)
  • 自动化测试-web(弹窗/滚动条/鼠标/等待等操作)

    为什么要处理弹窗? 如果页面操作过程中,有弹窗出现,不处理,无法继续对页面操作。 弹窗类型: js原生弹窗: 警告框、输入框、提示框,这些必须处理 如何处理: 1)获取弹窗对象 2)点击同意或取消方法 alert 弹窗 :只有信息及确认按钮 confirm弹窗 :在alert弹窗基础上

    2024年04月15日
    浏览(44)
  • Qt窗口设置无边框不能移动,鼠标穿透后不能响应点击事件

      最近在做一个迷你小工具,准备干点不可描述的事情,想要短小强悍,始终在最顶层显示,同时不要自带的关闭按钮和边框,百度一下,发现是需要设置如下两个属性:   那么问题来了,这样的话一运行窗体就在正中间,而且无法拖动,就像这样   哪怕对于我这种

    2024年02月10日
    浏览(61)
  • C++ Qt开发:Charts绘图组件概述

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 QCharts 二维绘图组件的常用方法及灵活运用。 Qt Charts 提供了一个强大且易于使

    2024年02月04日
    浏览(49)
  • C# Winform鼠标样式设置方法

    在 Winform 中,默认鼠标样式是一个白色箭头,移到按钮 button 上也不变为手指形,不容易区分是否可以点击(特别是 button 样式不是默认的时候)。如果鼠标移到 button 上自动变为手形,像网页中的链接一样,则很容易区分能否点击,不管 button 样式是否完全改变(如:样式设

    2024年02月09日
    浏览(45)
  • 【JS】设置滚动属性默认自动滚动到底部(overflow:scroll;)

    设置滚动属性默认自动滚动到底部: 场景:实现对话框,默认展示最新的对话内容 react 实现: 所需用到的css样式

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包