C# チャート コントロール マークアップの問題

一緒に創造し、成長するために一緒に働きましょう!「ナゲッツデイリー新プラン・8月アップデートチャレンジ」参加17日目、イベント詳細はこちら

序文:

プロジェクトに取り組んでいるときに、データの視覚化を実現するために Chart アイコンにデータをマークする必要があるという要件に遭遇しました. テーブルは Y 軸の目盛りを隠しているため、データ値を見ることができないため、動的表示値へのデータマーキングの形 では、この問題にどう対処すべきか、この記事を読んで、一緒に学びましょう、作成は簡単ではありません、誰もが好きです、コメント収集に注意を払います、あなたの好きと注意は私の創造物、そして私も学び続ける意欲。皆さん、ありがとうございました!! !

12354689123110.gif

結果を示す:

最初に効果を示し、何が起こっているかを見て、以下の記事を読みたいと思うかどうかを確認しましょう。主にチャート ダイアグラムをマークする問題に対処するために、チャート コントロールのポイント ツー ポイント機能を使用しました。チャート グラフのこの動的表示を実現するためにマークを設定します. 2 つのグラフの効果は非常に明白です. このようなニーズがあるプロジェクトでは、このフォームを使用するか、別のマウス クリックを使用してプロンプトをポップアップ表示することができます. 次の記事を書いて、みんなで一緒に学んで、もっと好きになってくれたら、もっと創作意欲が湧いてきます。

画像.png

画像.png

解決:

解決策を見てみましょう. Chart コントロールを使用して Point の MarkerStyle をマークします.これを実現するために、ランダム関数によって生成されたデータを使用して、MarkerStyle スタイルのマーク サイズ、マークの色、およびマークの表示値を設定します. 、生成されたテーブル、テーブルのデータを追加し、このポイントをマークします。最新のものだけをマークすることは、1対1でマークする方法を使用することです。つまり、最新のものをマークし、前のもののマークを削除します。ボタン I only give ステータス値を設定して、最新または常にマークされているかどうかを判断できるようにするか、マークなしでステータスを追加できます。コードは後で投稿され、後で自分で更新できます。

画像.png

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;
using System.Windows.Forms.DataVisualization.Charting;

namespace TestIC00
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }
        public int index = 0;
        public bool flag = false;
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = !timer1.Enabled;//对定时器的操作,点击打开或关闭定时器,主要是实现一秒传一个值
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            Random random = new Random();
            this.chart1.ChartAreas[0].AxisX.MajorGrid.Interval = 1;//网格间隔
            this.chart1.ChartAreas[0].AxisX.MinorGrid.Interval = 1;
            this.chart1.ChartAreas[0].AxisY.MajorGrid.Interval = 1;//网格间隔
            this.chart1.ChartAreas[0].AxisY.MinorGrid.Interval = 1;
            this.chart1.ChartAreas[0].AxisX.LabelStyle.Interval = 1;//设置X轴的值的间隔大小
            this.chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Gray;//设置X轴网格线颜色
            this.chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Gray;//设置Y轴网格线颜色
            chart1.ChartAreas[0].AxisX.ScrollBar.Enabled = true;//启动滚动条
            this.chart1.ChartAreas[0].AxisY.LabelStyle.Enabled = false;//使Y轴的刻度隐藏
            chart1.ChartAreas[0].AxisX.ScaleView.Scroll(System.Windows.Forms.DataVisualization.Charting.ScrollType.Last);//启用视图实现数据滚动
            int value = random.Next(0, 20);//产生随机数进行赋值
            chart1.Series[0].Points.AddY(value);//对折线图添加数据
            if(flag)//判断标记,如果是true表示只标记最新,需要去掉前面的一个值
            {
                this.chart1.Series[0].Points[index].MarkerStyle = MarkerStyle.Circle;//设置标记的形状为圆形
                this.chart1.Series[0].Points[index].MarkerColor = Color.Red;//形状颜色设置
                this.chart1.Series[0].Points[index].MarkerBorderWidth = 3;//形状大小设置
                this.chart1.Series[0].Points[index].MarkerSize = 10;//设置我们展示标记的大小
                this.chart1.Series[0].Points[index].Label = "功能:" + this.chart1.Series[0].Name + "\r\n" + "值:" + value.ToString();//对标记展示的值
                this.chart1.Series[0].Points[index].IsValueShownAsLabel = true;//展示标记
                this.chart1.Series[0].Points[index-1].MarkerBorderWidth = 0;//改前一个标记的大小
                this.chart1.Series[0].Points[index - 1].MarkerSize = 0;//形状大小
                this.chart1.Series[0].Points[index - 1].Label = "";//展示数据
                this.chart1.Series[0].Points[index - 1].IsValueShownAsLabel = false;//不展示
            }
            else//对数据一直标记
            {
                this.chart1.Series[0].Points[index].MarkerStyle = MarkerStyle.Circle;
                this.chart1.Series[0].Points[index].MarkerColor = Color.Red;
                this.chart1.Series[0].Points[index].MarkerBorderWidth = 3;
                this.chart1.Series[0].Points[index].MarkerSize = 10;
                this.chart1.Series[0].Points[index].Label = "功能:" + this.chart1.Series[0].Name + "\r\n" + "值:" + value.ToString();
                this.chart1.Series[0].Points[index].IsValueShownAsLabel = true;
            }
           //也可以加一种状态是什么也不标记,你们自己对那个状态值的处理就可以啦
            index++;
        }

        private void button2_Click(object sender, EventArgs e)//只标记最新按钮
        {
            flag = !flag;//对状态值的改变,我就使用了两种状态,你们可以改
        }
    }
}

复制代码

要約:

この記事は主に、私が遭遇した問題の簡単な解決策です. 非常に単純ですが、それでも技術的なものです. C# には問題が多すぎますが、それらを解決する人が少なすぎます. 共有する方法を知っておく必要があります. , そしてそこに記事を投稿している人が少なすぎるので、私が遭遇した問題の解決策をいくつか投稿し、みんなにいくつかのヒントを与えて、一緒に学びましょう. もちろん、他の方法もあります. もう1つの方法は、マウスを使用することです.クリックして表示します。興味のある学生は次の記事を読むことができます。作成、いいね、フォロー、コメント、収集は簡単ではありません。ありがとうございます。一緒に進歩していきます。Qを打て!! !

520520.gif

おすすめ

転載: juejin.im/post/7132818750155259912