最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#繪制實(shí)時(shí)曲線(xiàn)圖的方法詳解

 更新時(shí)間:2022年02月26日 10:22:17   作者:dawn  
這篇文章主要為大家詳細(xì)介紹了如何利用C#繪制實(shí)時(shí)曲線(xiàn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在終端機(jī)器上的曲線(xiàn)顯示本打算用控件,可控件折騰好長(zhǎng)時(shí)間也沒(méi)弄順,還是自己寫(xiě)的好使,記錄下來(lái)后面再改進(jìn)。

        //繪圖部分的定義
        Int32 Draw_Top;//繪畫(huà)Y起點(diǎn)
        Int32 Draw_Left;//繪畫(huà)X起點(diǎn)
        Int32 Draw_EdgeWidth;//X邊緣寬度
        Int32 Draw_EdgeHeight;//Y邊緣高度
        Int32 Draw_RangeWidth;//繪畫(huà)范圍寬度
        Int32 Draw_RangeHeight;//繪畫(huà)范圍高度
        Double[] XTDYData = new Double[21];
        Int32 ICountDraw=0;
        
        Int32 IActualWidth, IActualHeight;
        Int32 Draw_AdjustX = 20;
        Int32 Draw_AdjustY = 20;
        Point StartPoint = new Point();
        Point EndPoint = new Point();
        Point ZeroPoint = new Point();
        Int32 IScalesY = 11;
        Int32 IScalesX = 21;
        Int32 IIncrementX;
 
        Pen pSpecial = new Pen(Color.Black,1);
        Pen pCommon = new Pen(Color.Black,2);
        Font FontTitle = new Font("微軟雅黑", 12);//寫(xiě)標(biāo)題的字體
        Font FontText = new Font("微軟雅黑", 9);//寫(xiě)正文的字體           
        SolidBrush SBTitle = new SolidBrush(Color.Red);
        SolidBrush SBText = new SolidBrush(Color.Black);

在數(shù)據(jù)接收的事件中進(jìn)行曲線(xiàn)繪制:

                    //顯示趨勢(shì)圖
                    ICountDraw = ICountDraw + 1;
                    if (ICountDraw ==21)
                    {
                        for (int i=1;i<21;i++)
                        {
                            XTDYData[i - 1] = XTDYData[i];
                        }
                        XTDYData[20]= YBDWDealWithData.TYNDianYa.dValue;
                        ICountDraw = 20;
                    }
                    else
                    {
                        XTDYData[ICountDraw] = YBDWDealWithData.TYNDianYa.dValue;
                    }
                    FuncDrawYBDW();

下面是基礎(chǔ)函數(shù):

        public void FuncDrawYBDW() {
            Bitmap bmp = new Bitmap(Draw_RangeWidth, Draw_RangeHeight);//定義畫(huà)布的大小
            Graphics graphics = Graphics.FromImage(bmp);
            FuncDrawBasePic(ref graphics);
            FuncDrawDynamicPic(ref graphics);
            Graphics g = Graphics.FromHwnd(pictureBox1.Handle);
            g.DrawImage(bmp, new Point(0, 0));//在內(nèi)存中畫(huà)完后顯示在pictureBox1上,避免閃爍
        }
 
        public void FuncDrawBasePic(ref Graphics YBDWCanvas)
        {
            //繪制基礎(chǔ)
            //畫(huà)一個(gè)方框
            YBDWCanvas.FillRectangle(Brushes.WhiteSmoke, Draw_Top, Draw_Left, Draw_RangeWidth, Draw_RangeHeight);
            //畫(huà)坐標(biāo)軸X
            pCommon.Width = 2;
            pCommon.Color = Color.Black;
            StartPoint.X = Draw_Left + Draw_AdjustX;
            StartPoint.Y = Draw_Top + Draw_RangeHeight - Draw_AdjustY * 2;
            EndPoint.X = Draw_Left + Draw_RangeWidth - Draw_AdjustX * 2;
            EndPoint.Y = Draw_Top + Draw_RangeHeight - Draw_AdjustY * 2;
            YBDWCanvas.DrawLine(pCommon, StartPoint, EndPoint);
            IActualWidth = EndPoint.X - StartPoint.X;
            YBDWCanvas.DrawString("X", FontText, SBText, EndPoint.X, EndPoint.Y - 8);
            //畫(huà)箭頭
            StartPoint.X = EndPoint.X - 8;
            StartPoint.Y = EndPoint.Y - 4;
            YBDWCanvas.DrawLine(pCommon, StartPoint, EndPoint);
            StartPoint.X = EndPoint.X - 8;
            StartPoint.Y = EndPoint.Y + 4;
            YBDWCanvas.DrawLine(pCommon, StartPoint, EndPoint);
            //畫(huà)坐標(biāo)軸Y
            pCommon.Width = 2;
            pCommon.Color = Color.Black;
            StartPoint.X = Draw_Left + Draw_AdjustX;
            StartPoint.Y = Draw_Top + Draw_AdjustY;
            EndPoint.X = Draw_Left + Draw_AdjustX;
            EndPoint.Y = Draw_Top + Draw_RangeHeight - Draw_AdjustY * 2;
            YBDWCanvas.DrawLine(pCommon, StartPoint, EndPoint);
            IActualHeight = EndPoint.Y - StartPoint.Y;
            ZeroPoint = EndPoint;
            //畫(huà)畫(huà)箭頭
            EndPoint.X = StartPoint.X - 4;
            EndPoint.Y = StartPoint.Y + 8;
            YBDWCanvas.DrawLine(pCommon, StartPoint, EndPoint);
            EndPoint.X = StartPoint.X + 4;
            EndPoint.Y = StartPoint.Y + 8;
            YBDWCanvas.DrawLine(pCommon, StartPoint, EndPoint);
            YBDWCanvas.DrawString("Y", FontText, SBText, EndPoint.X, EndPoint.Y - 8);
            //畫(huà)X刻度
            pSpecial.Width = 1;
            pSpecial.DashStyle = DashStyle.Custom;
            pSpecial.DashPattern = new float[] { 1f, 1f };
            IIncrementX = IActualWidth / IScalesX;
            for (int i = 1; i < IScalesX; i = i + 1)
            {
                StartPoint.X = ZeroPoint.X + IIncrementX * i;
                StartPoint.Y = ZeroPoint.Y - 2;
                EndPoint.X = StartPoint.X;
                EndPoint.Y = StartPoint.Y - IActualHeight - 2;
                YBDWCanvas.DrawLine(pSpecial, StartPoint, EndPoint);
                //寫(xiě)標(biāo)識(shí)字
                if (i % 2 == 0)
                {
                    YBDWCanvas.DrawString(i.ToString(), FontText, SBText, StartPoint.X - 6, StartPoint.Y + 4);
                }
            }
 
            //畫(huà)Y刻度
            Int32 IIncrementY = IActualHeight / IScalesY;
            for (int i = 1; i < IScalesY; i = i + 1)
            {
                StartPoint.X = ZeroPoint.X;
                StartPoint.Y = ZeroPoint.Y - IIncrementY * i;
                EndPoint.X = StartPoint.X + IActualWidth;
                EndPoint.Y = StartPoint.Y;
                YBDWCanvas.DrawLine(pSpecial, StartPoint, EndPoint);
                //寫(xiě)標(biāo)識(shí)字
                if (i % 2 == 0)
                {
                    YBDWCanvas.DrawString((i - 1).ToString(), FontText, SBText, StartPoint.X - 12, StartPoint.Y + 4);
                }
            }
            //寫(xiě)標(biāo)題
            //Rectangle YBDWMessRect = new Rectangle(SX, SY, MessageDotRadius * 2, MessageDotRadius * 2);//圓的大小
            //YBDWCanvas.FillEllipse(SBTitle, YBDWMessRect);
            //畫(huà)連接線(xiàn)
            YBDWCanvas.DrawString(SDrawTitle, FontTitle, SBTitle, 100,30);
 
        }
 
        public void FuncDrawDynamicPic(ref Graphics YBDWCanvas)
            {
            //準(zhǔn)備實(shí)際畫(huà)線(xiàn)的數(shù)據(jù)
            Point[] XTDYPoints =new Point[21];//系統(tǒng)電壓數(shù)據(jù)
            for (int i = 0; i < IScalesX; i = i + 1)
            {
                    XTDYPoints[i].X = ZeroPoint.X + IIncrementX * i;
                    XTDYPoints[i].Y = ZeroPoint.Y - (int)((XTDYData[i]/IActualHeight)*6000);
            }
            pSpecial.Width = 3;
            pSpecial.Color = Color.Red;
            YBDWCanvas.DrawCurve(pSpecial, XTDYPoints, 3.0F);
        }

實(shí)際效果圖:

點(diǎn)選不同的文字進(jìn)行相應(yīng)的實(shí)時(shí)動(dòng)態(tài)圖的顯示。

以上就是C#繪制實(shí)時(shí)曲線(xiàn)圖的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于C#實(shí)時(shí)曲線(xiàn)圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • UnityShader3實(shí)現(xiàn)轉(zhuǎn)圈與冷卻效果

    UnityShader3實(shí)現(xiàn)轉(zhuǎn)圈與冷卻效果

    這篇文章主要為大家詳細(xì)介紹了UnityShader3實(shí)現(xiàn)轉(zhuǎn)圈與冷卻效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • c#基礎(chǔ)——了解程序結(jié)構(gòu)

    c#基礎(chǔ)——了解程序結(jié)構(gòu)

    這篇文章主要介紹了c# 程序結(jié)構(gòu)的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)C#,感興趣的朋友可以了解下
    2020-07-07
  • C#正則表達(dá)式的6個(gè)簡(jiǎn)單例子

    C#正則表達(dá)式的6個(gè)簡(jiǎn)單例子

    本文介紹了C#中的正則表達(dá)式的六個(gè)例子,都是經(jīng)常用到的,希望通過(guò)本文的介紹,能夠給你帶來(lái)收獲。
    2015-10-10
  • C#在復(fù)雜多線(xiàn)程環(huán)境下使用讀寫(xiě)鎖同步寫(xiě)入文件

    C#在復(fù)雜多線(xiàn)程環(huán)境下使用讀寫(xiě)鎖同步寫(xiě)入文件

    這篇文章介紹了C#在復(fù)雜多線(xiàn)程環(huán)境下使用讀寫(xiě)鎖同步寫(xiě)入文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#繪制中國(guó)國(guó)旗的方法

    C#繪制中國(guó)國(guó)旗的方法

    這篇文章主要介紹了C#繪制中國(guó)國(guó)旗的方法,以實(shí)例形式較為詳細(xì)的分析了C#圖形繪制的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C# wpf簡(jiǎn)單顏色板的實(shí)現(xiàn)

    C# wpf簡(jiǎn)單顏色板的實(shí)現(xiàn)

    wpf本身沒(méi)有提供顏色板之類(lèi)的控件,有些業(yè)務(wù)使用場(chǎng)景需要使用顏色板之類(lèi)的控件,本文就簡(jiǎn)單實(shí)現(xiàn),感興趣的可以了解一下
    2021-10-10
  • C#?使用PrintDocument類(lèi)打印標(biāo)簽的方法

    C#?使用PrintDocument類(lèi)打印標(biāo)簽的方法

    本文介紹打印機(jī)初步配置,以及實(shí)現(xiàn)方法,標(biāo)簽主要展示資產(chǎn)基本信息以及二維碼,對(duì)C#?使用PrintDocument類(lèi)打印標(biāo)簽的詳細(xì)過(guò)程感興趣的朋友一起看看吧
    2022-04-04
  • C#實(shí)現(xiàn)回文檢測(cè)的方法

    C#實(shí)現(xiàn)回文檢測(cè)的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)回文檢測(cè)的方法,實(shí)例分析了C#使用棧進(jìn)行回文檢測(cè)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#遍歷指定目錄下所有文件的方法

    C#遍歷指定目錄下所有文件的方法

    這篇文章主要介紹了C#遍歷指定目錄下所有文件的方法,實(shí)例分析了C#中GetFiles()方法遍歷文件的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • WCF如何使用動(dòng)態(tài)代理精簡(jiǎn)代碼架構(gòu)

    WCF如何使用動(dòng)態(tài)代理精簡(jiǎn)代碼架構(gòu)

    這篇文章主要介紹了WCF如何使用動(dòng)態(tài)代理精簡(jiǎn)代碼架構(gòu),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論

白水县| 星座| 广元市| 丰城市| 元朗区| 普陀区| 清水县| 河东区| 思茅市| 剑川县| 湘潭市| 顺平县| 红安县| 兖州市| 邹平县| 鄢陵县| 鸡西市| 正宁县| 宿松县| 资阳市| 舒兰市| 六盘水市| 安化县| 昌乐县| 榆社县| 伊川县| 彭水| 胶南市| 墨竹工卡县| 陵水| 赤峰市| 凯里市| 元朗区| 庆元县| 新化县| 水富县| 仁怀市| 通河县| 康定县| 濮阳市| 青田县|