日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TeeChart基础使用手册

發布時間:2023/12/14 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TeeChart基础使用手册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TeeChart使用手冊

pdf版下載地址
TeeChart庫下載

文章目錄

  • TeeChart使用手冊
    • 1、TeeChart.dll、TeeChart8.ocx、TeeChart.WPF.dll優缺點
      • 1.1 TeeChart.dll
      • 1.2 TeeChart8.ocx
      • 1.3 TeeChart.WPF.dll
    • 2、Windows窗體應用(.NET Framework) + TeeChart.dll
      • 2.1 創建工程
      • 2.2 添加TeeChart.dll
      • 2.3. 基本參數設置
        • 2.3.1 代碼設置
        • 2.3.2 代碼實現效果
        • 2.3.3 圖像界面設置
        • 2.3.4 界面設置實現效果
    • 3、Windows窗體應用(.NET Framework) + TeeChart8.ocx
      • 3.1 創建工程
      • 3.2 添加TeeChart8.ocx
      • 3.3. 基本參數設置
        • 3.3.1 代碼設置
        • 3.3.2 代碼實現效果
        • 3.3.3 圖像界面設置
        • 3.3.4 界面設置實現效果
    • 4、WPF應用(.NET Framework) + TeeChart.WPF.dll
      • 4.1 創建工程
      • 4.2 添加TeeChart.WPF.dll
      • 4.3. 基本參數設置
        • 4.3.1 代碼設置
        • 4.3.2 代碼實現效果
    • 5、動態繪制圖表
      • 5.1 TeeChart.dll實現
        • 5.1.1 不同條件實現效果
        • 5.1.2 TeeChart.dll繪圖效率測試結果
      • 5.2 TeeChart8.ocx實現
        • 5.2.1 不同條件實現效果
        • 5.2.2 TeeChart8.ocx繪圖效率測試結果
      • 5.3 TeeChart.WPF.dll實現
        • 5.3.1 不同條件實現效果
        • 5.3.2 TeeChart.WPF.dll繪圖效率測試結果
    • 6、Add-數據添加函數解析

返回頂部

1、TeeChart.dll、TeeChart8.ocx、TeeChart.WPF.dll優缺點

  • TeeChart.dll、TeeChart8.ocx、TeeChart.WPF.dll數據繪制效率表
繪制數據量TeeChart.dllTeeChart8.ocxTeeChart.WPF.dll
>16000(帶端點)
<16000(帶端點)
任意數量(不帶端點)
  • TeeChart.dll、TeeChart8.ocx、TeeChart.WPF.dll流暢繪制的數據量范圍
繪制方式TeeChart.dllTeeChart8.ocxTeeChart.WPF.dll
帶端點<2000<2500<1500
不帶端點<6000<8000<2500

返回頂部

1.1 TeeChart.dll

  • 缺點:

    • TeeChart.dll在顯示效果上較差,如圖所示,添加控件后默認情況下在縮放是鼠標的選框會出現偏移、虛影、重疊、閃爍的情況,圖中紅圈為鼠標位置。

      • 解決方法(1):進入TeeChart Editor界面 –> Chart –>General –>Zoom –>Pen 然后修改任意一項參數,就不會出現選框偏移、閃爍等問題,而虛影、選框重疊的問題還是存在,第一次修改后會在Form.Designer.cs文件中生成相應的代碼,第二次以后修改不會生成,這導致第二次以后修改的參數不會生效,只有刪除第一次生成的代碼再設置才能生成。

      • 解決方法(2):在程序中添加任意一條設置Zoom參數的代碼就不會出現選框偏移等問題,如:

        tChart1.Zoom.Pen.Style = System.Drawing.Drawing2D.DashStyle.Dash;

    • TeeChart.dll的TeeChart Editor界面存在字體模糊,缺失,被遮擋的情況。

  • 優點:

    • 在TeeChart.dll的TeeChart Editor界面中設置的參數會在Form.Designer.cs文件中自動生成相應的代碼,步驟清晰,利于通過代碼繪制圖標,可用于學習每個參數、功能的代碼實現方式。

    • TeeChart.dll在使用時支持.NET Framework 4及4以上的框架。

    • 具有較多重載函數,結構清晰,使用簡單方便。

    • TeeChart.dll添加大量數據的效率高于TeeChart8.ocx,和TeeChart.WPF.dll差不多。

    • TeeChart.dll在繪制超過16000個帶端點的數據時效率最高。

返回頂部

1.2 TeeChart8.ocx

  • 缺點:

    • 在TeeChart8.ocx的Editing界面上設置的參數、內容并不會在Form.Designer.cs文件中生成相應的代碼,而是將控件的設置信息編碼后寫入Form.resx文件中,不利于使用代碼實現TeeChart8.ocx的圖表功能,如下圖。

    • TeeChart8.ocx大部分類、函數、參數、實現方式與TeeChart.dll、TeeChart.WPF.dll差異較大,所以在從TeeChart.dll、TeeChart.WPF.dll轉到TeeChart8.ocx后使用代碼實現時不是很方便。

    • TeeChart8.ocx在使用時支持**.NET Framework 4.5及4.5以上的框架,當使用框架低于4.5時,在運行程序時會出現異常。**

  • 優點:

    • TeeChart8.ocx的Editing界面在顯示效果上要優于TeeChart.dll,功能邏輯更清晰,較少出現字體模糊、被遮擋的情況,使用圖像界面實現圖表效率高于TeeChart.dll。

    • 在圖表種類上TeeChart8.ocx 有121種,TeeChart.dll有104種。

    • TeeChart8.ocx添加大量數據的速度較慢,略低于TeeChart.dll和TeeChart.WPF.dll。

    • TeeChart8.ocx 在繪制小于16000個帶端點的數據時效率最高,繪制任意數量不帶端點的數據效率最高。

返回頂部

1.3 TeeChart.WPF.dll

  • 缺點:

    • TeeChart.WPF.dll沒有圖形設置窗口,不能通過圖形界面進行設置,開發效率較低。

    • 部分的功能、參數也被棄用,在使用上不易上手,代碼實現效率較低。

    • 大概率出現某一組數據繪制失敗的情況,且與數據量無關。

    • TeeChart.WPF.dll 繪制任意數量的數據效率都比較低,能流暢繪制的數據量小。

  • 優點:

    • TeeChart.WPF.dll的部分類、函數、參數與TeeChart.dll相同,在熟悉TeeChart.dll代碼實現的情況下使用TeeChart.WPF.dll會更容易。
    • TeeChart.WPF.dll在使用時支持**.NET Framework 4及4以上**的框架。
    • TeeChart.WPF.dll添加大量數據的效率高于TeeChart8.ocx,和TeeChart.dll差不多。

返回頂部

2、Windows窗體應用(.NET Framework) + TeeChart.dll

2.1 創建工程

  • 打開Visual studio,將選項欄設置為C# — windows — 桌面,如下圖:

  • 選擇Windows窗體應用(.NET Framework),然后點擊下一步,設置好項目名稱和位置,點擊創建,創建成功后如下圖。

返回頂部

2.2 添加TeeChart.dll

  • 選擇窗口左上角(根據每個人Visual studio設置不同而位置不同)的工具箱。

  • 在工具欄中任意處點擊鼠標右鍵,選擇添加選項卡

  • 設置好選項卡名字后,在新建的選項卡上點擊鼠標右鍵,點擊選擇項

  • 進入選擇工具項后,選擇**.NET Framework組件**,點擊瀏覽,然后然后找到存放TeeChart.dll的路徑,再點擊確定。

  • 這樣新建的選項卡中就添加進了Teechart。

返回頂部

2.3. 基本參數設置

2.3.1 代碼設置

  • 從工具欄找到剛添加的TChart,使用鼠標左鍵拖入設計窗口。

  • 鼠標左鍵選中添加的TChart,按R鍵進入屬性欄,找到布局 –> Dock,設置為fill

  • 進入Form.cs文件,創建一個函數DrawImage(),根據需要使用下表中的程序語句設置Chart的常用基本參數。
private void SetChart() {/*******************圖表窗體設置********************************/chartMove.Aspect.View3D = false; //關閉控件3D效果 默認為true//chartMove.Aspect.Chart3DPercent = 100; //3D效果度大小chartMove.Legend.CheckBoxes = true; //是否需要勾選,如果只有一種數據,且設置為false時,顯示每個點的縱坐標chartMove.Legend.Visible = true; //直線標題集合(圖例)是否顯示chartMove.Legend.Alignment = Steema.TeeChart.LegendAlignments.Bottom; //直線標題顯示位置chartMove.Header.Text = "teeChart.dll動態繪圖"; //Tchart窗體標題chartMove.Axes.Visible = true; //是否顯示坐標chartMove.Axes.Left.Title.Text = "Y軸"; //左側標題chartMove.Axes.Bottom.Title.Text = "X軸"; //底部標題chartMove.Axes.Left.Title.Visible = true; //坐標標題是否可見chartMove.Axes.Left.Title.Angle = 0; //設置坐標擺放角度,縱坐標默認為90chartMove.Axes.Left.Labels.Style = Steema.TeeChart.AxisLabelStyle.Auto; //Y軸樣式chartMove.Axes.Left.Labels.Angle = 0; //yx軸的Label顯示樣式(旋轉角度)chartMove.Walls.Visible = true; //是否顯示圖表邊框chartMove.Walls.Back.Transparent = false; //背景是否透明chartMove.Walls.Back.Gradient.Visible = true; //是否顯示背景//chartMove.Walls.Back.Gradient.MiddleColor = Color.FromArgb(0, 100,200); //背景漸變色chartMove.Axes.Left.Grid.Visible = true; //是否顯示橫行網格/*******************紅色直線創建并設置***************************/Steema.TeeChart.Styles.Line l_lineRed = new Steema.TeeChart.Styles.Line(); //創建直線對象l_lineRed.Title = "直線red"; //標題l_lineRed.Color = Color.FromArgb(250, 50, 0); //直線顏色//line1.ColorEach = true; //直線使用所有顏色l_lineRed.ShowInLegend = true; //是否顯示直線標題 true/false 默認為truel_lineRed.Pointer.Visible = true; //顯示端點l_lineRed.Pointer.Style = Steema.TeeChart.Styles.PointerStyles.Sphere; //設置端點樣式chartMove.Series.Add(l_lineRed); //添加直線/*******************綠色直線創建并設置******************************/Steema.TeeChart.Styles.Line l_lineGreen = new Steema.TeeChart.Styles.Line();l_lineGreen.Title = "直線green";l_lineGreen.Color = Color.FromArgb(0, 255, 0);l_lineGreen.ShowInLegend = true;l_lineGreen.Pointer.Visible = true;l_lineGreen.Pointer.Style = Steema.TeeChart.Styles.PointerStyles.Rectangle;chartMove.Series.Add(l_lineGreen);/*******************添加鼠標監聽,標記提示*************************/Steema.TeeChart.Tools.MarksTip l_marks = new Steema.TeeChart.Tools.MarksTip(); //創建標記提示對象l_marks.Style = Steema.TeeChart.Styles.MarksStyles.XY; //顯示信息設為X YchartMove.Tools.Add(l_marks);l_marks.MouseDelay = 200; //設置延時時間,注意必須再Add(marksTip)l_marks.HideDelay = 1500;/*******************添加數據顯示數據*****************************///第一種添加方式,單個點添加/*Random l_ran = new Random(); //隨機數種子for (int i = 0; i < 10000; i++){chartMove.Series[0].Add(i, l_ran.Next(400, 900)); //添加數據點chartMove.Series[1].Add(i, l_ran.Next(100, 500)); //添加數據點}*///第二種添加方式,添加數組Random l_ran = new Random(); //隨機數種子int[] l_arrX = new int[10000];int[] l_arrRedY = new int[10000];int[] l_arrGreenY = new int[10000];for (int i = 0; i < 10000; i++){l_arrX[i] = i;l_arrRedY[i] = l_ran.Next(400, 900);l_arrGreenY[i] = l_ran.Next(100, 500);}Console.WriteLine("添加前:" + DateTime.Now.ToString("mm:ss:fff")); //打印數據添加前系統時間chartMove.Series[0].Add(l_arrX, l_arrRedY); //添加數組chartMove.Series[1].Add(l_arrX, l_arrGreenY);Console.WriteLine("添加后:" + DateTime.Now.ToString("mm:ss:fff")); //打印數據添加后系統時間 }

  • 數據添加方式效率對比

    • 單位: 分:秒:毫秒

    • 數據量: 10000 * 2個數據點

    • public int Add(double x, double y); //添加點

      • 添加前:48:35:896
        添加后:48:35:901

        消耗:5 毫秒

      • 添加前:49:53:762
        添加后:49:53:768

        消耗:6 毫秒

      • 添加前:53:31:880
        添加后:53:31:885

        消耗:5 毫秒

    • public void Add(Array xValues, Array yValues); //添加數組

      • 添加前:35:39:089
        添加后:35:39:092

        消耗:3 毫秒

      • 添加前:33:58:818
        添加后:33:58:820

        差:2 毫秒

      • 添加前:11:30:878
        添加后:11:30:881

        消耗:3 毫秒

  • 綜合得出

    • 點添加方式:消耗時間在5-6毫秒左右;
    • 數組添加方式:消耗時間在2-3毫秒左右。
    • **結論:數組添加方式效率比點添加方式快一倍。**詳情請看:Add函數解析

返回頂部

2.3.2 代碼實現效果

返回頂部

2.3.3 圖像界面設置

  • 從工具欄找到剛添加的TChart,使用鼠標左鍵拖入設計窗口。

  • 鼠標左鍵選中添加的TChart,按R鍵進入屬性欄,找到布局 –> Dock,設置為fill

  • 鼠標右鍵點擊添加的TChart,選擇屬性。

  • 會進入TeeChart Editor界面,該界面主要能設置Chart、Series、Data、Print、Export、Tools、Animations、Themes八項。

  • 基本設置步驟

    • 選擇表的種類、樣式:Chart –> Series –> Add.

    • 選擇這里取消勾選左下角 view 3D,選擇3D分類 –> point 3D(不是必須,可選擇其它類),點擊OK.

    • Chart會變成所選的圖表樣式,左下角出現一個points3D1

    • 設置圖形窗口是否為3D、3D的效果程度:Chart –> 3D
      • 勾選3,開啟3D效果,這里可勾選也可不勾選。
      • 3D% :在勾選3后設置3D效果度大小。

    • 設置邊框和背景:Chart –> Walls
    • Visible Walls :是否顯示邊框
    • Left\Right\Back\Bottom:設置單面邊框

    • 設置point3D端點的顏色:Series –> Format

    • 設置線條的樣式:Series –> Format

    • 設置端點的樣式:Series –> Points

    • 設置橫坐標、縱坐標刻度顯示數據類型、Legend的顯示類型。

    • 設置標記提示:Tools –> “+”號。

    • 選擇Mark Tips –> Add.

    • 設置標記提示
      • style :設置顯示信息,這里改為X and Y values.
      • move:鼠標移動到目標點上就顯示。
      • Click:鼠標點擊目標點然后顯示。
      • Delay:設置響應時間。
      • Hide Delay:設置顯示時間。

    • 窗口左下角出現marksTip1

    • 可通過選中窗口左下角的圖標,點擊圖標右上角的三角圖標 –> Edit 來設置相應屬性參數。

    • 添加數據:進入Form.cs文件,寫入下列代碼。
    Random l_ran = new Random(); //隨機數種子 int[] l_arrX = new int[10000]; int[] l_arrY = new int[10000]; int[] l_arrZ = new int[10000]; for (int i = 0; i < 10000; i++) {l_arrX[i] = i;l_arrY[i] = l_ran.Next(400, 900);l_arrZ[i] = l_ran.Next(100, 500); } points3D1.Add(l_arrX, l_arrY, l_arrZ); //添加數組

    返回頂部

2.3.4 界面設置實現效果

返回頂部

3、Windows窗體應用(.NET Framework) + TeeChart8.ocx

3.1 創建工程

  • 打開Visual studio,將選項欄設置為C# — windows — 桌面。

  • 選擇Windows窗體應用(.NET Framework),然后點擊下一步,設置好項目名稱和位置,點擊創建

    • 需要注意的時這里的框架不能低于**.NET Framework 4.5**,否則使用TeeChart8.ocx時會報錯。

返回頂部

3.2 添加TeeChart8.ocx

  • 選擇窗口左上角(根據每個人Visual studio設置不同而位置不同)的工具箱。

  • 在工具欄中任意處點擊鼠標右鍵,選擇添加選項卡

  • 設置好選項卡名字后,在新建的選項卡上點擊鼠標右鍵,點擊選擇項

  • 進入選擇工具項后,選擇COM組件,找到并勾選TeeeChart Pro Activex control v8,再點擊確定。

  • 這樣新建的選項卡中就添加進了Teechart。

返回頂部

3.3. 基本參數設置

3.3.1 代碼設置

  • 從工具欄找到剛添加的TeeChart Pro Activex control v8,使用鼠標左鍵拖入設計窗口。

  • 鼠標左鍵選中添加的TChart,按R鍵進入屬性欄,找到布局 –> Dock,設置為fill

  • 進入Form.cs文件,創建兩個函數DrawImage()、ColorToUint(Color color),根據需要使用下表中的程序語句設置AxTChart的常用基本參數。

    /// <summary> /// 將Color的RGB值轉換為uint值 /// </summary> /// <param name="color"></param> /// <returns></returns> private uint ColorToUint(Color color) {return (uint)(((uint)color.B << 16) | (ushort)(((ushort)color.G << 8) | color.R)); } /// <summary> /// 靜態圖表繪制 /// </summary> private void SetChart() {/*******************圖表窗體設置********************************///axTChartMove.Header.Text.Clear(); //清空標題//axTChartMove.Header.Text.Add("TeeChar8.ocx"); //添加窗口標題,先清空原有標題axTChartMove.Header.Text.Text = "TeeChar8.ocx"; //設置tchart窗口標題axTChartMove.Axis.Left.Title.Caption = "Y軸"; //設置X軸Y軸標題axTChartMove.Axis.Bottom.Title.Caption = "X軸";axTChartMove.Axis.Left.Title.Angle = 0; //設置標題的旋轉角度axTChartMove.Aspect.View3D = false; //是否顯示3D效果/*axTChartMove.Axis.Bottom.SetMinMax(0, 200); //設置刻度顯示范圍axTChartMove.Axis.Left.SetMinMax(0, 1000);*/axTChartMove.Axis.Left.Increment = 10; //設置Y軸最小刻度axTChartMove.Legend.CheckBoxes = true; //是否需要勾選/*******************紅色直線創建并設置***************************/axTChartMove.AddSeries(TeeChart.ESeriesClass.scLine); //創建并添加直線對象axTChartMove.Series(0).Title = "直線red"; //設置線條名axTChartMove.Series(0).asLine.Pointer.Style = TeeChart.EPointerStyle.psCircle; //設置端點的樣式形狀axTChartMove.Series(0).asLine.Pointer.HorizontalSize = 4; //設置端點寬axTChartMove.Series(0).asLine.Pointer.VerticalSize = 4; //設置端點高axTChartMove.Series(0).asLine.Pointer.Visible = true; //是否顯示端點axTChartMove.Series(0).Color = ColorToUint(Color.FromArgb(255, 0, 0)); //設置直線顏色/*******************藍色直線創建并設置*****************************/axTChartMove.AddSeries(TeeChart.ESeriesClass.scLine); //創建并添加直線對象axTChartMove.Series(1).Title = "直線blue"; //設置線條名axTChartMove.Series(1).asLine.Pointer.Style = TeeChart.EPointerStyle.psCircle; //設置端點的樣式形狀axTChartMove.Series(1).asLine.Pointer.HorizontalSize = 4; //設置端點寬axTChartMove.Series(1).asLine.Pointer.VerticalSize = 4; //設置端點高axTChartMove.Series(1).asLine.Pointer.Visible = true; //是否顯示端點axTChartMove.Series(1).Color = ColorToUint(Color.FromArgb(0, 0, 255));/*******************添加鼠標監聽,標記提示*************************/axTChartMove.Tools.Add(TeeChart.EToolClass.tcMarksTip); //標記提示axTChartMove.Tools.Items[0].asMarksTip.Style = TeeChart.EMarkStyle.smsXY; //設置提示信息顯示樣式/*******************設置鼠標縮放**********************************/Color l_cZoom = Color.FromArgb(0, 0, 0);axTChartMove.Zoom.Pen.Color = ColorToUint(l_cZoom); //設置鼠標縮放選框顏色axTChartMove.Zoom.Pen.Style = TeeChart.EChartPenStyle.psDashDot; //選框線條樣式設置/*******************添加數據顯示數據*****************************///第一種添加方式,單個點添加/* Random l_ran = new Random(); //隨機數種子for (int i = 0; i < 10000; i++){axTChartMove.Series(0).AddXY(i, l_ran.Next(500, 900), "", axTChartMove.Series(0).Color); //添加數據點axTChartMove.Series(1).AddXY(i, l_ran.Next(100, 600), "", axTChartMove.Series(1).Color);}*///第二種添加方式,添加數組Random l_ran = new Random(); //隨機數種子int[] l_arrX = new int[10000];int[] l_arrRedY = new int[10000];int[] l_arrBlueY = new int[10000];for (int i = 0; i < 10000; i++){l_arrX[i] = i;l_arrRedY[i] = l_ran.Next(400, 900);l_arrBlueY[i] = l_ran.Next(100, 500);}Console.WriteLine("添加前:" + DateTime.Now.ToString("mm:ss:fff")); //打印數據添加前系統時間axTChartMove.Series(0).AddArray(10000, l_arrRedY, l_arrX); //添加數組數據axTChartMove.SeriesList.Items[1].AddArray(10000, l_arrBlueY, l_arrX); //效果和上面相同Console.WriteLine("添加后:" + DateTime.Now.ToString("mm:ss:fff ")); //打印數據添加后系統時間

  • 數據添加方式效率對比

    • 單位: 分:秒:毫秒

    • 數據量: 10000 * 2個數據點

    • int AddXY(double AX, double AY, string ALabel, uint Value); //添加點

      • 添加前:54:47:115
        添加后:54:47:826

        消耗:711 毫秒

      • 添加前:55:35:540
        添加后:55:35:884

        消耗:344 毫秒

      • 添加前:03:40:087
        添加后:03:40:516

        消耗:429 毫秒

    • void AddArray(int ArraySize, object YArray, object XArray); //添加數組

      • 添加前:14:55:456
        添加后:14:55:460

        消耗:4 毫秒

      • 添加前:15:51:258
        添加后:15:51:262

        消耗:4 毫秒

      • 添加前:16:20:728
        添加后:16:20:732

        消耗:4 毫秒

  • 綜合得出

    • 點添加方式:消耗時間在344-711毫秒左右;
    • 數組添加方式:消耗時間在4毫秒左右。
    • 結論:數組添加方式效率比點添加方式快了百倍。

返回頂部

3.3.2 代碼實現效果

返回頂部

3.3.3 圖像界面設置

  • 從工具欄找到剛添加的axTChart1,使用鼠標左鍵拖入設計窗口。

  • 鼠標左鍵選中添加的axTChart1,按R鍵進入屬性欄,找到布局 –> Dock,設置為fill

  • 鼠標右鍵點擊添加的axTChart1,選擇屬性。

  • 會進入到如圖所示窗口,點擊**Edit Chart…**開始編輯圖表。

  • 進入編輯欄后如圖所示,窗口左側時選項卡主要有Series、Chart、Data、Tools、Export、Print、Themes幾部分組成,窗口中部及右側是點擊選項卡后相應的設置區域。

  • 基本設置步驟。

    • 選擇表的種類、樣式: Series –> Add.

    • 選擇這里取消勾選左下角 view 3D,選擇3D分類 –> point 3D,點擊OK。

    • axTChart1會變成所選的圖表樣式。

    • 設置圖表標題: Chart –> General –> Fonts –> Font

      • 窗口中部選項欄選擇 Title ,可再 Font設置圖表標題的字體大小、字體類型、字體顏色等。

    • 設置坐標軸刻度:Axis –> Scales

      • Minimum –> Change :設置坐標軸刻度最小取值范圍。

      • Maximum –> Change:設置坐標軸刻度最大取值范圍。

      • Increment –> Change:設置坐標軸刻度增量。

      • Axis –> Labels–> Text–> Font 可設置坐標軸刻度的字體類型、字體大小、字體顏色等。

    • 設置坐標軸標題:Axis –> Title –> style

      • Style –> Title 里輸入標題內容。
      • 可選擇標題的位置:Left Axis、Right Axis等。
      • Angle 設置標題的旋轉角度。
      • Size設置標題區域大小。
      • Visible設置是否顯示標題。

      • Axis –> Title –> Format –> Text –> Font 可設置坐標軸標題的字體類型、字體大小、字體顏色等。

    • 設置線條:Series0 –> Format

      • color:設置端點顏色。
      • Color Each :使用任意顏色。
      • Line … :設置線條顏色、樣式、大小等。

    • 設置端點:Series0 –> Point

      • 設置端點樣式、大小等。

    • 設置縮放功能:Chart –> Zoom

      • Allow : 是否使用縮放功能
      • Pen… :設置縮放選框的顏色、樣式、線條粗細等。
      • Minimum Pixels:設置選框選擇的最小像素大小。
      • Mouse Button:設置縮放功能是使用鼠標哪一個鍵。

    • 設置標記提示

    • 添加工具:Tools –> Add

    • 選擇Mark Tips,點擊Add .

    • style :設置顯示信息,這里改為X and Y values.

    • move:鼠標移動到目標點上就顯示。

    • Click:鼠標點擊目標點然后顯示。

    • Delay:設置響應時間。

    • Hide Delay:設置顯示時間。

    • 添加數據:進入Form.cs文件,寫入下列代碼。

Random l_ran = new Random(); //隨機數種子 int[] l_arrX = new int[10000]; int[] l_arrRedY = new int[10000]; int[] l_arrBlueY = new int[10000];for (int i = 0; i < 10000; i++) {l_arrX[i] = i;l_arrRedY[i] = l_ran.Next(400, 900);l_arrBlueY[i] = l_ran.Next(100, 500); } axTChartMove.Series(0).AddArray(10000, l_arrRedY, l_arrX); //添加數組數據 axTChartMove.SeriesList.Items[1].AddArray(10000, l_arrBlueY, l_arrX); //效果和上面相同 <p align="right"><a href="#top">返回頂部</a></p>

3.3.4 界面設置實現效果

返回頂部

4、WPF應用(.NET Framework) + TeeChart.WPF.dll

4.1 創建工程

  • 打開Visual studio,將選項欄設置為C# — windows — 桌面。
  • 選擇WPF應用(.NET Framework),然后點擊下一步,設置好項目名稱和位置,點擊創建

返回頂部

4.2 添加TeeChart.WPF.dll

  • 選擇窗口左上角(根據每個人Visual studio設置不同而位置不同)的工具箱。

  • 在工具欄中任意處點擊鼠標右鍵,選擇添加選項卡

  • 設置好選項卡名字后,在新建的選項卡上點擊鼠標右鍵,點擊選擇項

  • 進入選擇工具項后,選擇WPF組件,點擊瀏覽,然后然后找到存放TeeChart.dll的路徑,再點擊確定。

  • 這樣新建的選項卡中就添加進了Teechart。

返回頂部

4.3. 基本參數設置

4.3.1 代碼設置

  • 從工具欄找到剛添加的TChart,使用鼠標左鍵拖入設計窗口。

  • 鼠標右鍵點擊添加的TChart,選擇布局 –> 全部填充。

  • 選中剛添加的TChart控件,在窗口右邊的屬性欄設置控件名稱。

  • 進入MainWindow.xaml.cs文件,創建一個函數DrawImage(),根據需要使用下表中的程序語句設置Chart的常用基本參數。

    private void SetChart() {/*******************圖表窗體設置********************************/chartMove.Aspect.View3D = false; //控件3D效果chartMove.Header.Text = "WPF使用TeeChart.WPF"; //設置窗體標題chartMove.Legend.Visible = true; //圖例chartMove.Legend.Color = Color.FromRgb(100, 200, 200); //設置圖例背景顏色chartMove.Axes.Visible = true; //是否顯示坐標軸chartMove.Axes.Left.Title.Text = "Y軸"; //Y軸標題chartMove.Axes.Bottom.Title.Text = "X軸"; //X軸標題chartMove.Axes.Left.Title.Visible = true; //坐標軸標題是否可見chartMove.Axes.Left.Title.Angle = 0; //坐標軸標題旋轉角度chartMove.Axes.Left.Labels.Style = Steema.TeeChart.WPF.AxisLabelStyle.Auto;//Y軸樣式chartMove.Axes.Left.Labels.Angle = 20; //坐標軸刻度標簽旋轉角度chartMove.Axes.Bottom.Grid.Visible = true; //是否顯示網格/*******************藍色直線創建并設置*****************************/Steema.TeeChart.WPF.Styles.Line l_lineBlue = new Steema.TeeChart.WPF.Styles.Line(); //創建linel_lineBlue.Color = Color.FromRgb(0, 0, 200); //設置線顏色l_lineBlue.Title = "直線blue";l_lineBlue.Pointer.Visible = true; //設置開啟端點chartMove.Series.Add(l_lineBlue); //line添加進TChart/*******************綠色直線創建并設置***************************/Steema.TeeChart.WPF.Styles.Line l_lineGreen = new Steema.TeeChart.WPF.Styles.Line(); //創建linel_lineGreen.Color = Color.FromRgb(0, 200, 0); //設置線顏色l_lineGreen.Title = "直線green";l_lineGreen.Pointer.Visible = true;chartMove.Series.Add(l_lineGreen);/*******************添加鼠標監聽,標記提示*************************/Steema.TeeChart.WPF.Tools.MarksTip l_marks = new Steema.TeeChart.WPF.Tools.MarksTip();l_marks.Style = Steema.TeeChart.WPF.Styles.MarksStyles.XY; //設置提示信息樣式l_marks.MouseAction = Steema.TeeChart.WPF.Tools.MarksTipMouseAction.Click; //設置觸發響應方式chartMove.Tools.Add(l_marks);/*******************添加數據顯示數據*****************************///第一種添加方式,單個點添加/*Random l_ran = new Random(); //隨機數種子for (int i = 0; i < 10000; i++){chartMove.Series[0].Add(i, l_ran.Next(600, 1000)); //添加數據點 chartMove.Series[1].Add(i, l_ran.Next(200, 700)); //添加數據點 }*///第二種添加方式,添加數組Random l_ran = new Random(); //隨機數種子int[] l_arrX = new int[10000];int[] l_arrBlueY = new int[10000];int[] l_arrGreenY = new int[10000];for (int i = 0; i < 10000; i++){l_arrX[i] = i;l_arrBlueY[i] = l_ran.Next(100, 500);l_arrGreenY[i] = l_ran.Next(400, 900);}Console.WriteLine("添加前:" + DateTime.Now.ToString("mm:ss:fff")); //打印數據添加前系統時間chartMove.Series[0].Add(l_arrX, l_arrBlueY); //添加數組數據chartMove.Series[1].Add(l_arrX, l_arrGreenY);Console.WriteLine("添加后:" + DateTime.Now.ToString("mm:ss:fff ")); //打印數據添加后系統時間 }

  • 數據添加方式效率對比

    • 單位: 分:秒:毫秒

    • 數據量: 10000 * 2個數據點

    • public virtual int Add(double x, double y); //添加點

      • 添加前:42:25:431
        添加后:42:25:438

        消耗:7 毫秒

      • 添加前:43:29:754
        添加后:43:29:760

        消耗:6 毫秒

      • 添加前:44:03:966
        添加后:44:03:972

        消耗:6 毫秒

    • public void Add(Array xValues, Array yValues); //添加數組

      • 添加前:55:20:610
        添加后:55:20:613

        消耗:3 毫秒

      • 添加前:55:32:508
        添加后:55:32:511

        消耗:3 毫秒

      • 添加前:55:47:579
        添加后:55:47:581

        消耗:2 毫秒

  • 綜合得出

    • 點添加方式:消耗時間在6-7毫秒左右;
    • 數組添加方式:消耗時間在2-3毫秒左右。
    • 結論:數組添加方式效率比點添加方式快一倍。

返回頂部

4.3.2 代碼實現效果

返回頂部

5、動態繪制圖表

5.1 TeeChart.dll實現

/// <summary> /// 圖表參數設置 /// </summary> private void SetChart() {/*******************圖表窗體設置********************************/chartMove.Aspect.View3D = false; //關閉控件3D效果 默認為truechartMove.Legend.CheckBoxes = true; //是否需要勾選,如果只有一種數據,且設置為false時,顯示每個點的縱坐標chartMove.Legend.Visible = true; //直線標題集合(圖例)是否顯示chartMove.Legend.Alignment = Steema.TeeChart.LegendAlignments.Bottom; //直線標題顯示位置chartMove.Header.Text = "teeChart.dll動態繪圖"; //Tchart窗體標題chartMove.Axes.Visible = true; //是否顯示坐標chartMove.Axes.Left.Title.Text = "Y軸"; //左側標題chartMove.Axes.Bottom.Title.Text = "X軸"; //底部標題chartMove.Axes.Left.Title.Visible = true; //坐標標題是否可見chartMove.Axes.Left.Title.Angle = 0; //設置坐標擺放角度,縱坐標默認為90chartMove.Axes.Left.Labels.Style = Steema.TeeChart.AxisLabelStyle.Auto; //Y軸樣式chartMove.Axes.Left.Labels.Angle = 0; //yx軸的Label顯示樣式(旋轉角度)chartMove.Walls.Visible = true; //是否顯示圖表邊框chartMove.Walls.Back.Transparent = false; //背景是否透明chartMove.Walls.Back.Gradient.Visible = true; //是否顯示背景chartMove.Axes.Left.Grid.Visible = true; //是否顯示橫行網格/*******************紅色直線創建并設置***************************/Steema.TeeChart.Styles.Line l_lineRed = new Steema.TeeChart.Styles.Line(); //直線l_lineRed.Title = "直線red"; //標題l_lineRed.Color = Color.FromArgb(250, 50, 0); //直線顏色//line1.ColorEach = true; //直線使用所有顏色l_lineRed.ShowInLegend = true; //是否顯示直線標題 true/false 默認為truel_lineRed.Pointer.Visible = true; //顯示端點l_lineRed.Pointer.Style = Steema.TeeChart.Styles.PointerStyles.Sphere; //設置端點樣式chartMove.Series.Add(l_lineRed); //添加直線/*******************綠色直線創建并設置*****************************/Steema.TeeChart.Styles.Line l_lineGreen = new Steema.TeeChart.Styles.Line();l_lineGreen.Title = "直線green";l_lineGreen.Color = Color.FromArgb(0, 255, 0);l_lineGreen.ShowInLegend = true;l_lineGreen.Pointer.Visible = true;l_lineGreen.Pointer.Style = Steema.TeeChart.Styles.PointerStyles.Rectangle;chartMove.Series.Add(l_lineGreen);/*******************添加鼠標監聽,標記提示*************************/Steema.TeeChart.Tools.MarksTip l_marks = new Steema.TeeChart.Tools.MarksTip(); //創建標記提示對象l_marks.Style = Steema.TeeChart.Styles.MarksStyles.XY; //顯示信息設為X YchartMove.Tools.Add(l_marks);l_marks.MouseDelay = 200; //設置延時時間,注意必須在Add(l_marks)后,否則會報錯l_marks.HideDelay = 1500;}/// <summary> /// 子線程執行的方法 /// </summary> protected void ThreadRun() {while (true){if (!m_thSwitch){Thread l_thThis = Thread.CurrentThread; //如果m_thSwitch為false,則銷毀當前線程l_thThis.Abort();}else{int[] l_arrX = new int[10000];int[] l_arrY_red = new int[10000];int[] l_arrY_green = new int[10000];Random l_ran = new Random(); //隨機數種子for (int i = 0; i < 10000; i++){l_arrX[i] = i;l_arrY_red[i] = l_ran.Next(200, 300);l_arrY_green[i] = l_ran.Next(300, 400);}Console.WriteLine("顯示前:" + DateTime.Now.ToString("mm:ss:fff")); //打印數據添加顯示前系統時間chartMove.Invoke(new Action(delegate () //通過委托在UI線程繪制圖像{chartMove.Series[0].Add(l_arrX, l_arrY_red);chartMove.Series[1].Add(l_arrX, l_arrY_green);}));Console.WriteLine("顯示后:" + DateTime.Now.ToString("mm:ss:fff")); //打印數據添加顯示后系統時間}} }private bool m_thSwitch = false; //用于判斷線程是開啟還是關閉/// <summary> /// 開始Button /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonStart_Click(object sender, EventArgs e) {if (!m_thSwitch){ThreadStart l_start = new ThreadStart(ThreadRun);Thread l_thAddData = new Thread(l_start); //創建子線程繪制圖表數據m_thSwitch = true;l_thAddData.Start(); //線程開始} } /// <summary> /// 停止Button /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonStop_Click(object sender, EventArgs e) {m_thSwitch = false; //關閉線程 }

返回頂部

5.1.1 不同條件實現效果

  • 以下數據皆為測試數據中隨機抽取。

  • 測試條件1: 同時顯示兩路數據、每路10000個數據點,共20000個數據點(帶端點)。

    • 顯示前:55:19:646
      顯示后:55:20:055

      消耗:409 毫秒

    • 顯示前:55:20:056
      顯示后:55:20:457

      消耗:401毫秒

    • 顯示前:55:20:458
      顯示后:55:20:865

      消耗:407 毫秒

  • 測試條件2: 同時顯示兩路數據、每路10000個數據點,共20000個數據點(不帶端點)

    • 顯示前:00:10:464
      顯示后:00:10:586

    消耗:122 毫秒

    • 顯示前:00:10:586
      顯示后:00:10:711

      消耗:125 毫秒

    • 顯示前:00:10:711
      顯示后:00:10:832

      消耗:121 毫秒

  • 測試條件3: 同時顯示兩路數據、每路5000個數據點,共10000個數據點(帶端點)。

    • 顯示前:04:39:917
      顯示后:04:40:123

      消耗:206 毫秒

    • 顯示前:04:40:123
      顯示后:04:40:338

      消耗:215 毫秒

    • 顯示前:04:40:338
      顯示后:04:40:545

      消耗:207 毫秒

  • 測試條件4: 同時顯示兩路數據、每路5000個數據點,共10000個數據點(不帶端點)。

    • 顯示前:09:20:054
      顯示后:09:20:118

      消耗:64 毫秒

    • 顯示前:09:20:118
      顯示后:09:20:179

      消耗:61毫秒

    • 顯示前:09:20:179
      顯示后:09:20:240

      消耗:61毫秒

  • 測試條件5: 同時顯示兩路數據、每路1000個數據點,共2000個數據點(帶端點)。

    • 顯示前:13:02:957
      顯示后:13:03:005

      消耗:48 毫秒

    • 顯示前:13:03:005
      顯示后:13:03:055

      消耗:50 毫秒

    • 顯示前:13:03:055
      顯示后:13:03:100

      消耗:45 毫秒

  • 測試條件6: 同時顯示兩路數據、每路1000個數據點,共2000個數據點(帶端點)。

    • 顯示前:16:16:539
      顯示后:16:16:556

      消耗:17

    • 顯示前:16:16:556
      顯示后:16:16:574

      消耗:18

    • 顯示前:16:16:574
      顯示后:16:16:599

      消耗:25

返回頂部

5.1.2 TeeChart.dll繪圖效率測試結果

  • 根據上方幾組測試數據得出以下幾點結論:
    • 相同數據量下,不帶端點比帶端點繪制效率高3倍左右。
    • TeeChart.dll繪圖效率與數據量呈線性關系。
    • 根據20幀左右為肉眼感覺的流暢度,帶端點繪制一次大概最多繪制總量2000個數據,不帶端點一次大概最多繪制總量6000個數據。

返回頂部

5.2 TeeChart8.ocx實現

/// <summary> /// 將Color的RGB值轉換為uint值 /// </summary> /// <param name="color"></param> /// <returns></returns> private uint ColorToUint(Color color) {return (uint)(((uint)color.B << 16) | (ushort)(((ushort)color.G << 8) | color.R)); }/// <summary> /// AxTChart基本參數設置 /// </summary> private void SetChart() {/*******************圖表窗體設置********************************/axTChartMove.Header.Text.Text = "TeeChar8.ocx"; //設置tchart窗口標題axTChartMove.Axis.Left.Title.Caption = "Y軸"; //設置X軸Y軸標題axTChartMove.Axis.Bottom.Title.Caption = "X軸";axTChartMove.Axis.Left.Title.Angle = 0; //設置標題的旋轉角度axTChartMove.Aspect.View3D = false; //是否顯示3D效果axTChartMove.Axis.Left.Increment = 10; //設置Y軸最小刻度axTChartMove.Legend.CheckBoxes = true; //是否需要勾選/*******************紅色直線創建并設置***************************/axTChartMove.AddSeries(TeeChart.ESeriesClass.scLine); //創建并添加直線對象axTChartMove.Series(0).Title = "直線red"; //設置線條名axTChartMove.Series(0).asLine.Pointer.Style = TeeChart.EPointerStyle.psCircle; //設置端點的樣式形狀axTChartMove.Series(0).asLine.Pointer.HorizontalSize = 4; //設置端點寬axTChartMove.Series(0).asLine.Pointer.VerticalSize = 4; //設置端點高axTChartMove.Series(0).asLine.Pointer.Visible = true; //是否顯示端點axTChartMove.Series(0).Color = ColorToUint(Color.FromArgb(255, 0, 0)); //設置直線顏色/*******************藍色直線創建并設置*****************************/axTChartMove.AddSeries(TeeChart.ESeriesClass.scLine); //創建并添加直線對象axTChartMove.Series(1).Title = "直線blue"; //設置線條名axTChartMove.Series(1).asLine.Pointer.Style = TeeChart.EPointerStyle.psCircle; //設置端點的樣式形狀axTChartMove.Series(1).asLine.Pointer.HorizontalSize = 4; //設置端點寬axTChartMove.Series(1).asLine.Pointer.VerticalSize = 4; //設置端點高axTChartMove.Series(1).asLine.Pointer.Visible = true; //是否顯示端點axTChartMove.Series(1).Color = ColorToUint(Color.FromArgb(0, 0, 255));/*******************添加鼠標監聽,標記提示*************************/axTChartMove.Tools.Add(TeeChart.EToolClass.tcMarksTip); //標記提示axTChartMove.Tools.Items[0].asMarksTip.Style = TeeChart.EMarkStyle.smsXY; //設置提示信息顯示樣式/*******************設置鼠標縮放**********************************/Color l_cZoom = Color.FromArgb(0, 0, 0);axTChartMove.Zoom.Pen.Color = ColorToUint(l_cZoom); //設置鼠標縮放選框顏色axTChartMove.Zoom.Pen.Style = TeeChart.EChartPenStyle.psDashDot; //選框線條樣式設置 }/// <summary> /// 子線程執行的方法 /// </summary> private void ThreadRun() {while (true){if (!m_thSwitch){Thread l_thThis = Thread.CurrentThread; //如果m_thSwitch為false,則銷毀當前線程l_thThis.Abort();}else{Random l_ran = new Random(); //隨機數種子int[] l_arrX = new int[10000];int[] l_arrRedY = new int[10000];int[] l_arrBlueY = new int[10000];for (int i = 0; i < 10000; i++) //組合數據到數組中{l_arrX[i] = i;l_arrRedY[i] = l_ran.Next(400, 900);l_arrBlueY[i] = l_ran.Next(100, 500);}Console.WriteLine("顯示前:" + DateTime.Now.ToString("mm:ss:fff")); //打印數據添加顯示前系統時間axTChartMove.Invoke(new Action(delegate () //通過委托在UI線程繪制圖像{axTChartMove.Series(0).AddArray(10000, l_arrRedY, l_arrX); //添加數組數據axTChartMove.SeriesList.Items[1].AddArray(10000, l_arrBlueY, l_arrX); //效果和上面相同}));Console.WriteLine("顯示后:" + DateTime.Now.ToString("mm:ss:fff ")); //打印數據添加顯示后系統時間}} }private bool m_thSwitch = false; //用于判斷線程是開啟還是關閉 /// <summary> /// 開始Button /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonStart_Click(object sender, EventArgs e) {if (!m_thSwitch){ThreadStart l_start = new ThreadStart(ThreadRun);Thread l_thAddData = new Thread(l_start); //創建子線程繪制圖表數據m_thSwitch = true;l_thAddData.Start(); //線程開始} } /// <summary> /// 停止Button /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonStop_Click(object sender, EventArgs e) {m_thSwitch = false; //關閉線程 }

返回頂部

5.2.1 不同條件實現效果

  • 測試條件1: 同時顯示兩路數據、每路10000個數據點,共20000個數據點(帶端點)。

    • 顯示前:54:24:196
      顯示后:54:24:891

      消耗:695 毫秒

    • 顯示前:54:24:891
      顯示后:54:25:510

      消耗:619 毫秒

    • 顯示前:54:25:941
      顯示后:54:26:513

      消耗:572 毫秒

  • **測試條件2:**同時顯示兩路數據、每路10000個數據點,共20000個數據點(不帶端點)。

    • 顯示前:57:24:433
      顯示后:57:24:535

      消耗:102 毫秒

    • 顯示前:57:24:536
      顯示后:57:24:633

      消耗:97 毫秒

    • 顯示前:57:24:633
      顯示后:57:24:732

      消耗:99 毫秒

  • **測試條件3:**同時顯示兩路數據、每路5000個數據點,共10000個數據點(帶端點)。

    • 顯示前:01:10:577
      顯示后:01:10:781

      消耗:204 毫秒

    • 顯示前:01:10:833
      顯示后:01:11:080

      消耗:247 毫秒

    • 顯示前:01:11:080
      顯示后:01:11:334

      消耗:254 毫秒

  • **測試條件4:**同時顯示兩路數據、每路5000個數據點,共10000個數據點(不帶端點)。

    • 顯示前:04:53:350
      顯示后:04:53:421

      消耗:71 毫秒

    • 顯示前:04:53:489
      顯示后:04:53:558

      消耗:69 毫秒

    • 顯示前:04:53:558
      顯示后:04:53:626

      消耗:68 毫秒

  • **測試條件5:**同時顯示兩路數據、每路1000個數據點,共2000個數據點( 帶端點)。

    • 顯示前:08:18:860
      顯示后:08:18:900

      消耗:40 毫秒

    • 顯示前:08:18:900
      顯示后:08:18:941

      消耗:41 毫秒

    • 顯示前:08:18:941
      顯示后:08:18:981

      消耗:40 毫秒

  • **測試條件6:**同時顯示兩路數據、每路1000個數據點,共2000個數據點( 不帶端點)。

    • 顯示前:12:26:130
      顯示后:12:26:142

      消耗:12 毫秒

    • 顯示前:12:26:142
      顯示后:12:26:155

      消耗:13 毫秒

    • 顯示前:12:26:155
      顯示后:12:26:167

      消耗:12 毫秒

返回頂部

5.2.2 TeeChart8.ocx繪圖效率測試結果

  • 根據幾組測試數據得出以下幾點結論:
    • 相同數據量下,不帶端點比帶端點繪制效率高6倍左右。
    • TeeChart8.ocx繪圖效率與數據量增長呈反比關系。
    • 根據20幀左右為肉眼感覺的流暢度,帶端點繪制一次大概最多繪制總量2500個數據,不帶端點一次大概最多繪制總量8000個數據。

返回頂部

5.3 TeeChart.WPF.dll實現

private void SetChart() {/*******************圖表窗體設置********************************/chartMove.Aspect.View3D = false; //控件3D效果chartMove.Header.Text = "WPF使用TeeChart.WPF"; //設置窗體標題chartMove.Legend.Visible = true; //圖例chartMove.Legend.Color = Color.FromRgb(100, 200, 200); //設置圖例背景顏色chartMove.Axes.Visible = true; //是否顯示坐標軸chartMove.Axes.Left.Title.Text = "Y軸"; //Y軸標題chartMove.Axes.Bottom.Title.Text = "X軸"; //X軸標題chartMove.Axes.Left.Title.Visible = true; //坐標軸標題是否可見chartMove.Axes.Left.Title.Angle = 0; //坐標軸標題旋轉角度chartMove.Axes.Left.Labels.Style = Steema.TeeChart.WPF.AxisLabelStyle.Auto;//Y軸樣式chartMove.Axes.Left.Labels.Angle = 20; //坐標軸刻度標簽旋轉角度chartMove.Axes.Bottom.Grid.Visible = true; //是否顯示網格/*******************藍色直線創建并設置*****************************/Steema.TeeChart.WPF.Styles.Line l_lineBlue = new Steema.TeeChart.WPF.Styles.Line(); //創建linel_lineBlue.Color = Color.FromRgb(0, 0, 200); //設置線顏色l_lineBlue.Title = "直線blue";l_lineBlue.Pointer.Visible = false; //設置開啟端點chartMove.Series.Add(l_lineBlue); //line添加進TChart/*******************綠色直線創建并設置***************************/Steema.TeeChart.WPF.Styles.Line l_lineGreen = new Steema.TeeChart.WPF.Styles.Line(); //創建linel_lineGreen.Color = Color.FromRgb(0, 200, 0); //設置線顏色l_lineGreen.Title = "直線green";l_lineGreen.Pointer.Visible = false;chartMove.Series.Add(l_lineGreen);/*******************添加鼠標監聽,標記提示*************************/Steema.TeeChart.WPF.Tools.MarksTip l_marks = new Steema.TeeChart.WPF.Tools.MarksTip();l_marks.Style = Steema.TeeChart.WPF.Styles.MarksStyles.XY; //設置提示信息樣式l_marks.MouseAction = Steema.TeeChart.WPF.Tools.MarksTipMouseAction.Click; //設置觸發響應方式chartMove.Tools.Add(l_marks); }/// <summary> /// 子線程執行的方法 /// </summary> private void ThreadRun() {while (true){if (!m_thSwitch){Thread l_thThis = Thread.CurrentThread; //如果m_thSwitch為false,則銷毀當前線程l_thThis.Abort();}else{//第二種添加方式,添加數組Random l_ran = new Random(); //隨機數種子int[] l_arrX = new int[1250];int[] l_arrBlueY = new int[1250];int[] l_arrGreenY = new int[1250];for (int i = 0; i < 1250; i++){l_arrX[i] = i;l_arrBlueY[i] = l_ran.Next(100, 500);l_arrGreenY[i] = l_ran.Next(400, 900);}Console.WriteLine("顯示前:" + DateTime.Now.ToString("mm:ss:fff")); //打印數據添加顯示前系統時間chartMove.Dispatcher.Invoke(new Action(delegate () //通過委托在UI線程繪制圖像{chartMove.Series[0].Add(l_arrX, l_arrBlueY); //添加數組數據chartMove.Series[1].Add(l_arrX, l_arrGreenY);}));Console.WriteLine("顯示后:" + DateTime.Now.ToString("mm:ss:fff ")); //打印數據添加顯示后系統時間 }} }private bool m_thSwitch = false; //用于判斷線程是開啟還是關閉/// <summary> /// 開始Button /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonStart_Click(object sender, EventArgs e) {if (!m_thSwitch){ThreadStart l_start = new ThreadStart(ThreadRun);Thread l_thAddData = new Thread(l_start); //創建子線程繪制圖表數據m_thSwitch = true;l_thAddData.Start(); //線程開始} } /// <summary> /// 停止Button /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonStop_Click(object sender, EventArgs e) {m_thSwitch = false; //關閉線程 }

返回頂部

5.3.1 不同條件實現效果

  • 測試條件1: 同時顯示兩路數據、每路10000個數據點,共20000個數據點(帶端點)。

    • 顯示前:47:34:611
      顯示后:47:35:546

      935 毫秒

    • 顯示前:49:30:041
      顯示后:49:30:995

      954 毫秒

    • 顯示前:49:30:996
      顯示后:49:31:974

      978 毫秒

    • 顯示前:57:28:732 (繪制失敗)
      顯示后:57:28:733

      消耗:1 毫秒

  • 測試條件2: 同時顯示兩路數據、每路10000個數據點,共20000個數據點(不帶端點)。

    • 顯示前:32:29:988
      顯示后:32:30:249

      消耗:261 毫秒

    • 顯示前:32:30:536
      顯示后:32:30:788

      消耗:252 毫秒

    • 顯示前:32:30:789
      顯示后:32:31:043

      消耗:254 毫秒

    • 顯示后:32:31:043 (繪制失敗)
      顯示前:32:31:043

      消耗:0 毫秒

  • 測試條件3: 同時顯示兩路數據、每路5000個數據點,共10000個數據點(帶端點)。

    • 顯示前:36:19:108
      顯示后:36:19:501

      消耗:393 毫秒

    • 顯示前:36:19:857
      顯示后:36:20:250

      消耗:393 毫秒

    • 顯示前:36:20:252
      顯示后:36:20:650

      消耗:398 毫秒

    • 顯示前:36:20:650 (繪制失敗)
      顯示后:36:20:651

      消耗:1 毫秒

  • 測試條件4: 同時顯示兩路數據、每路5000個數據點,共10000個數據點(不帶端點)。

    • 顯示前:39:57:782
      顯示后:39:57:940

      消耗:158 毫秒

    • 顯示前:39:57:941
      顯示后:39:58:103

      消耗:162 毫秒

    • 顯示前:39:58:464
      顯示后:39:58:629

      消耗:165 毫秒

    • 顯示后:39:59:123 (繪制失敗)
      顯示前:39:59:124

      消耗:1 毫秒

  • 測試條件5: 同時顯示兩路數據、每路1000個數據點,共2000個數據點(帶端點)。

    • 顯示前:44:01:284
      顯示后:44:01:357

      消耗:73 毫秒

    • 顯示前:44:01:475
      顯示后:44:01:553

      消耗:78 毫秒

    • 顯示前:44:01:650
      顯示后:44:01:726

      消耗:76 毫秒

    • 顯示前:44:01:812 (繪制失敗)
      顯示后:44:01:813

      消耗:1 毫秒

  • 測試條件6: 同時顯示兩路數據、每路1000個數據點,共2000個數據點(不帶端點)。

    • 顯示前:47:53:530
      顯示后:47:53:570

      消耗:40 毫秒

    • 顯示前:47:53:570
      顯示后:47:53:610

      消耗:40 毫秒

    • 顯示前:47:53:611
      顯示后:47:53:652

      消耗:41 毫秒

    • 顯示前:47:53:734 (繪制失敗)
      顯示后:47:53:734

      消耗:0 毫秒

返回頂部

5.3.2 TeeChart.WPF.dll繪圖效率測試結果

  • 根據幾組測試數據得出以下幾點結論:
    • 相同數據量下,不帶端點比帶端點繪制效率高2-3倍左右。
    • TeeChart.WPF.dll帶端點繪圖效率與數據量增長反比關系,不帶端點繪圖效率與數據量增加呈正比關系。
    • 根據20幀左右為肉眼感覺的流暢度,帶端點繪制一次大概最多繪制總量1500個數據,不帶端點一次大概最多繪制總量2500個數據。
    • 大概率出現某一組數據繪制失敗的情況,且與數據量無關。

返回頂部

6、Add-數據添加函數解析

  • 概述: add函數無論是 public int Add(double x, double y) 還是 public void Add(Array xValues, Array yValues) 都是異步執行函數,并不參與圖表數據的繪制。

  • 步驟:

    • 使用ILSpy反編譯工具打開編譯后的可執行文件,找到使用到添加數據的函數。

    • 點擊Add,找到函數實現位置。

      • 可以看出,前面if中都是在將數組數據添加給控件,最后調用Invalidate()函數,此函數的主要功能是使控件的特定區域無效并向控件發送繪制消息。也就是說Invalidate函數只發出重繪界面的消息,不參與繪制控件,在消息發送完后就返回,Add函數就結束了。
    • 從下列函數可看出,以點的方式添加數據每添加一個點就執行一次**Invalidate()**函數,所以添加效率會遠低于數組添加方式。

總結

以上是生活随笔為你收集整理的TeeChart基础使用手册的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

在线观看视频中文字幕 | 日韩中文免费视频 | 在线免费性生活片 | 天天操天天色天天 | 奇米影视在线99精品 | www.av免费 | 国产xxxx | 欧美日韩国产mv | 亚洲午夜激情网 | av天天草 | 日韩在线观看不卡 | 国产亚洲精品久久久久久 | 国产精品一区二区在线播放 | a黄色影院 | 97视频在线观看播放 | 午夜久久福利影院 | 国产精品视频地址 | 久久三级视频 | x99av成人免费| www.久久爱.cn| 成人av av在线 | 免费av网站在线看 | 欧美电影黄色 | 中文字幕欧美日韩va免费视频 | 日韩久久午夜一级啪啪 | 日本不卡123区 | 丁香视频全集免费观看 | 免费观看9x视频网站在线观看 | 国产九色在线播放九色 | 亚洲永久国产精品 | 中文字幕国产一区 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久久久综合 | 日韩欧美视频免费在线观看 | 美女久久一区 | 亚洲人人射 | 成人在线免费观看视视频 | 韩日电影在线观看 | 亚洲第一久久久 | 中文av字幕在线观看 | 丁香婷婷深情五月亚洲 | 五月天激情视频在线观看 | 婷婷丁香花 | 久久99热久久99精品 | 9草在线| 香蕉视频久久久 | 国产一区二区免费 | 丁香视频五月 | 成人免费在线视频观看 | 九九爱免费视频在线观看 | 人人干,人人爽 | 在线视频欧美精品 | 久久精品99国产国产 | 国产精品九九九九九九 | 国产亚洲免费观看 | 91色国产在线 | 五月天,com | 久久久免费观看视频 | www.五月婷婷.com | 成年人网站免费在线观看 | 亚洲91中文字幕无线码三区 | 欧美大香线蕉线伊人久久 | 国产亚洲精品久久 | 99热精品久久 | 国产成人一区二区精品非洲 | 亚洲视频播放 | 久久久久免费精品国产 | 一区视频在线 | 激情五月播播久久久精品 | 福利一区在线视频 | 狠狠色狠狠色合久久伊人 | 天天玩天天干天天操 | 国产精品精品久久久久久 | 亚洲人视频在线 | 国产中的精品av小宝探花 | 中文字幕亚洲高清 | 国产明星视频三级a三级点| 久久只精品99品免费久23小说 | 精品视频成人 | 日韩大片在线免费观看 | 四虎影视成人永久免费观看亚洲欧美 | 西西大胆啪啪 | 天天撸夜夜操 | 99热最新网址 | 丝袜足交在线 | 麻豆传媒在线免费看 | 成人久久视频 | 在线 欧美 日韩 | 狠狠狠狠狠狠狠 | 国内一区二区视频 | 综合网成人 | 国内精品在线观看视频 | 国产色就色 | 久久国产高清视频 | 美女视频永久黄网站免费观看国产 | 干 操 插| 九九久久久久久久久激情 | 成人国产精品一区二区 | 国产又黄又爽又猛视频日本 | 日韩在线观看视频一区二区三区 | 一本一本久久a久久 | 亚洲成人中文在线 | 欧美成人在线免费观看 | 草免费视频 | 日韩精品1区2区 | 在线性视频日韩欧美 | 久久dvd| 日韩网站免费观看 | 亚洲国产字幕 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 日韩欧美一区二区不卡 | 最新国产精品亚洲 | 国产精品视频线看 | www.天天操| 国产成人精品综合 | 在线免费观看国产视频 | 亚洲免费视频在线观看 | 久久综合久久八八 | 狠狠躁夜夜躁人人爽超碰91 | 日日摸日日添夜夜爽97 | 国产中出在线观看 | 亚洲热视频 | 免费视频久久 | 国产精品久久久久久久久久免费看 | 爱爱一区| 999热视频 | 最新日韩视频在线观看 | 97国产情侣爱久久免费观看 | 黄色小说视频在线 | 欧美天堂视频在线 | 六月丁香综合 | 久久不射影院 | 91免费观看视频在线 | 国产盗摄精品一区二区 | 久草在线综合 | 91精品啪啪| 午夜三级理论 | 日本在线中文在线 | 亚洲在线激情 | 国产一区二区播放 | 国产小视频在线 | 国产在线精品区 | 国产99免费 | 日本狠狠干 | 黄av在线 | 精品999在线| 偷拍久久久| 激情网站免费观看 | 亚洲精品视频 | 99riav1国产精品视频 | 久久精品亚洲一区二区三区观看模式 | 亚洲高清国产视频 | 91人人视频在线观看 | 色婷婷国产在线 | 亚洲久在线 | av综合 日韩| 久久久久成人精品亚洲国产 | 亚洲国产精品电影 | 免费麻豆视频 | 久久草在线视频国产 | 最新午夜| 国产精品视频全国免费观看 | 丁香花中文字幕 | 99 国产精品 | 日韩狠狠操 | 黄在线免费看 | 日韩精品一区二区三区中文字幕 | 国产人成看黄久久久久久久久 | 日本久久影视 | 久久日韩精品 | 免费色婷婷 | 国产精品久久久久999 | 天天操天天操天天操天天操 | 色在线网站 | 91视频 - 88av | 亚洲黄色成人网 | 日韩一区二区三区在线看 | 免费看毛片网站 | 精品一区二区视频 | 8x成人在线 | 欧美另类网站 | 欧美一区二区三区四区夜夜大片 | 欧美日韩国产在线精品 | 91久久黄色 | 69亚洲视频 | 久久久网站 | 人人插人人费 | 午夜视频欧美 | 国产一级不卡视频 | 久久久久久久久久影院 | 国产一区二区手机在线观看 | 狠狠躁日日躁夜夜躁av | 色a网| 91丨九色丨91啦蝌蚪老版 | 日韩区在线观看 | 人人看人人 | 日韩簧片在线观看 | 黄色精品久久 | 中文字幕日韩精品有码视频 | 制服丝袜一区二区 | 97人人视频| 国产精品久久久久国产精品日日 | 91看片麻豆 | 精品免费视频. | www.婷婷色| 免费看的国产视频网站 | 在线之家免费在线观看电影 | 91在线播 | 国产精品久久人 | 91精品亚洲影视在线观看 | 蜜桃av观看| 夜夜骑首页 | 婷婷草| 91精品视频在线 | 东方av免费在线观看 | av网站在线免费观看 | 国内精品久久久久影院男同志 | 中国一级片在线观看 | 97在线免费视频观看 | bbbb操bbbb | 天天操天天怕 | 91麻豆操 | av福利网址导航 | 激情网第四色 | 亚洲国内精品在线 | 亚洲欧洲xxxx | 国产伦理久久精品久久久久_ | 91免费日韩 | 欧美成人影音 | 国产999精品久久久 免费a网站 | 中文字幕在线中文 | 麻豆av一区二区三区在线观看 | 激情五月av| 免费观看一区 | 韩日色视频| 国产成人三级在线播放 | 五月婷婷色 | 九九精品久久 | 国产青青青 | 亚洲影视九九影院在线观看 | 久久伊人精品一区二区三区 | 国产精品久久99精品毛片三a | 免费成人av在线看 | 韩日av一区二区 | 国产欧美久久久精品影院 | 日韩中文字幕第一页 | 久久女同性恋中文字幕 | 日韩一区视频在线 | 天天操天天操天天操天天操天天操天天操 | 超碰97在线资源 | 中文字幕在线播放第一页 | 色五月成人| 久久久久久久久久免费视频 | 波多野结衣视频一区二区 | 日韩亚洲在线视频 | 婷婷激情欧美 | 亚洲成人黄色在线观看 | 一级成人网 | 丁香 久久 综合 | 亚洲成人资源在线观看 | 欧美日韩在线视频观看 | 久草99| 久久综合天天 | 亚洲综合国产精品 | 精品五月天| 亚洲久草在线 | 久久久免费av | 久久福利精品 | 久久人人97超碰com | 欧洲视频一区 | 黄色网免费 | 成人免费网站视频 | 新版资源中文在线观看 | 欧美日韩一区二区在线观看 | 波多野结衣最新 | 中文字幕免费久久 | 中文字幕久久精品 | 国产精品 亚洲精品 | 91九色成人 | 国产一区播放 | 国产成人一区二区啪在线观看 | 97视频人人澡人人爽 | 中文字幕2021 | 国产午夜三级一区二区三桃花影视 | 日韩午夜精品福利 | 久久婷婷精品 | 手机av在线网站 | 九九视频免费 | 在线黄色国产电影 | 在线中文字幕av观看 | 91激情视频在线观看 | 欧美日韩国产区 | 亚洲在线视频网站 | 日韩免费观看一区二区三区 | 国产高清黄 | 国产xx视频| 国产高清在线看 | 亚洲一级二级三级 | 亚洲综合激情五月 | 成人免费观看视频网站 | 在线国产视频 | 久久国语 | 9在线观看免费高清完整版 玖玖爱免费视频 | 黄色av网站在线免费观看 | 亚洲精品欧美视频 | 久久久这里有精品 | 婷婷激情综合网 | 激情伊人五月天 | 免费一级片在线 | 日日干日日色 | a视频在线播放 | 成人a在线观看高清电影 | 国产视频亚洲 | 欧美91精品国产自产 | 国产成人精品久久亚洲高清不卡 | 天天干天天插 | 最近高清中文字幕在线国语5 | 草久在线 | 久久午夜免费视频 | 亚洲九九 | 在线观看午夜av | 日韩精品一区二区三区免费视频观看 | 久久免费在线观看视频 | 日日夜夜天天久久 | 久久国产经典 | 色综合小说 | 精品黄色在线观看 | 黄色大片视频网站 | 国产精品一区在线 | 91av在线免费观看 | 亚洲精品av中文字幕在线在线 | 500部大龄熟乱视频 欧美日本三级 | 久久精品免费播放 | 在线观看黄网站 | 亚洲人成免费 | 婷婷久久亚洲 | 玖玖视频网| 午夜精品一区二区三区免费视频 | 久久久久久久18 | 精品亚洲午夜久久久久91 | 国产亚洲精品女人久久久久久 | 精品中文字幕在线观看 | 成人免费中文字幕 | 久久在线免费 | av在线中文 | av电影免费观看 | 亚一亚二国产专区 | 狠狠色丁婷婷日日 | 亚洲电影图片小说 | 亚洲激情国产精品 | 国产一区在线免费观看视频 | 久操免费视频 | 久久国产精品二国产精品中国洋人 | 久久久久久99精品 | 91精品国产欧美一区二区成人 | 18网站在线观看 | 91成年视频| 国产午夜在线 | 亚洲精品欧美视频 | 国产a级免费| 午夜视频日本 | 91在线视频在线 | 日本中文字幕电影在线免费观看 | www四虎影院 | 免费看色的网站 | 婷婷丁香综合 | 亚洲综合黄色 | 国产中文字幕在线播放 | 久久久久综合 | 色综合久久综合 | 婷婷中文字幕 | 国产在线2020 | 最近中文字幕免费 | 欧美性色综合网站 | 午夜影院在线观看18 | 久久经典国产视频 | 蜜臀av麻豆 | 国产精品久久久久久婷婷天堂 | 伊人导航 | 91网在线看 | 亚洲女同ⅹxx女同tv | 久久av免费 | 日韩免费观看高清 | 91麻豆看国产在线紧急地址 | 999国内精品永久免费视频 | 麻豆传媒电影在线观看 | 日韩精品中字 | 国产精品成人免费一区久久羞羞 | 91精品无人成人www | 日韩欧美一二三 | 91福利区一区二区三区 | 97天堂 | 成片视频免费观看 | 丝袜制服综合网 | 久久久久久草 | 天天碰天天操 | 国产a国产| 国产97视频在线 | 色视频在线| 91 中文字幕| www国产亚洲精品久久网站 | 欧美激情第八页 | 九九视频在线观看视频6 | 在线观看成人毛片 | 国产成人精品亚洲 | 亚洲码国产日韩欧美高潮在线播放 | 99视频精品 | 99国产在线 | 成人教育av | 日本在线观看视频一区 | 精品久久久一区二区 | 国产在线观看你懂的 | 国产成人久久精品一区二区三区 | 99riav1国产精品视频 | 永久免费av在线播放 | 狠狠色丁香久久婷婷综合五月 | 日韩精品免费在线观看 | 国产999精品 | 中文字幕最新精品 | 狠狠狠的干 | 久热色超碰 | 97精品国产97久久久久久粉红 | 亚洲激情国产精品 | 探花视频网站 | 最近久乱中文字幕 | 亚洲成人第一区 | 国色综合 | 国产一区免费视频 | 国产a国产 | 在线观看国产一区二区 | 欧美午夜视频在线 | 国产福利在线免费观看 | 性色xxxxhd | 人人艹视频| 中文字幕在线免费观看视频 | 欧美色图一区 | 日韩av在线高清 | 欧美日韩在线精品一区二区 | 国产精品原创在线 | 天堂网av在线 | 亚州国产视频 | 国产亚洲精品久久19p | 国产精品久久久久久999 | 天天爱天天射 | 国产视频一区二区在线 | 亚洲视频h | 国产精品久久9 | 狠狠操91| 国产一区播放 | 在线成人免费 | 毛片美女网站 | 欧美国产日韩激情 | 欧美人体xx | 欧美日韩观看 | 综合激情网 | 一区二区中文字幕在线 | 五月婷婷综合色拍 | 日韩中文幕 | 91色在线观看视频 | wwxxxx日本| 日韩电影在线视频 | 天天干,天天操 | 久久久久久久久久毛片 | av色影院 | www.五月天激情 | 伊人狠狠操 | 国产日产亚洲精华av | 一 级 黄 色 片免费看的 | 日韩精品一区二区三区在线视频 | 欧美成人h版电影 | 国产成人免费观看久久久 | av黄色免费看 | 九九视频精品在线 | 久久综合九色99 | 久久一精品 | 国内精品视频一区二区三区八戒 | av免费看av| 缴情综合网五月天 | 久久福利小视频 | 国产精品久久久久一区二区三区 | 四虎成人精品在永久免费 | 亚洲三级在线免费观看 | 色小说av| 操久久免费视频 | 91亚洲成人 | 999久久国精品免费观看网站 | 国产 字幕 制服 中文 在线 | 成人黄色中文字幕 | 日韩免费视频线观看 | 久久97超碰| 在线精品在线 | 国产日韩欧美在线看 | 精品免费一区 | 一区二区三区日韩视频在线观看 | 国产精品影音先锋 | 四虎永久精品在线 | 国模吧一区 | 永久免费精品视频网站 | 亚洲激情中文 | 国产一线在线 | 久久91网 | 中字幕视频在线永久在线观看免费 | 51久久夜色精品国产麻豆 | 国产精品在线看 | 免费看成人 | 国产精品成人久久久久 | 日日夜夜中文字幕 | 日韩av综合网站 | 国产精品日韩欧美一区二区 | 欧美一区二区视频97 | 国产在线播放一区二区三区 | 97在线观看免费高清 | 婷婷久久精品 | 成人亚洲网 | 九九九在线观看 | 精品xxx| 久久福利小视频 | 久久草在线免费 | 婷婷色资源 | 精品国产91亚洲一区二区三区www | www.91国产| 国产一级二级av | 国产成人一区二区三区免费看 | 中文字幕av影院 | 免费在线观看91 | 天天碰天天操 | 久久视频在线观看中文字幕 | 亚洲自拍自偷 | 九九日韩 | 国产亚洲精品女人久久久久久 | 国产精品久久久久久久久久久免费 | 国产精久久久久久久 | 中文字幕有码在线观看 | 日韩欧美在线不卡 | 国产资源在线观看 | 精品国产一区二区三区男人吃奶 | 久久久久久久免费 | av电影在线播放 | 久久视频在线视频 | 日韩在线免费小视频 | 久久久国产影视 | 九九热在线免费观看 | 国产女人免费看a级丨片 | 丁香国产视频 | 狠狠躁日日躁夜夜躁av | 欧美成人播放 | 激情欧美网| 香蕉视频国产在线 | 黄色大片视频网站 | 日本久久电影网 | 精品伊人久久久 | 久久国产一区二区三区 | 国产精品毛片一区视频 | 亚洲视频免费在线观看 | 国产电影黄色av | 天天综合网国产 | 国产精品女人网站 | 婷婷五月在线视频 | 亚洲最新在线视频 | 一区二区三区日韩精品 | 九九热视频在线免费观看 | 中文字幕资源网在线观看 | 91精品少妇偷拍99 | 久久黄色成人 | www.天天干 | 91精品爽啪蜜夜国产在线播放 | 亚洲精品在线观看网站 | 在线观看免费观看在线91 | 精品久久久久久亚洲 | 中文字幕在线资源 | 97综合视频 | 日韩午夜高清 | 激情综合五月网 | 精品九九九 | 欧美日韩一区二区三区在线免费观看 | 亚洲人成人在线 | 综合久久久久久久 | 国产一区二区在线免费 | 国产精品美女免费视频 | a在线免费观看视频 | 免费视频二区 | 精品综合久久久 | 久久视频中文字幕 | 国产精品久久9 | 91麻豆精品 | 9色在线视频 | 日本久久久久久久久 | 精品国产一二三四区 | 欧美激情操 | 日韩羞羞 | 国产成人香蕉 | 中文字幕免费一区 | 色婷婷av国产精品 | 色婷婷综合在线 | 久久国产网 | 亚洲综合网站在线观看 | 婷婷色中文字幕 | 特黄免费av| 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 国产精品大片在线观看 | 国产理论一区二区三区 | 久久a级片 | 欧美一二区在线 | 中文字幕在线观看视频一区二区三区 | 久久久久久高潮国产精品视 | 天堂av在线免费 | av高清一区二区三区 | 日日爱网站 | 精品国产亚洲一区二区麻豆 | 免费精品国产va自在自线 | 精品久久久久久综合日本 | 亚洲综合视频在线观看 | 久久久亚洲国产精品麻豆综合天堂 | 91字幕| 免费v片 | 国产日韩视频在线 | 黄色三级网站在线观看 | 麻豆91精品91久久久 | 久久久性 | 成人小视频在线观看免费 | 国产免费视频在线 | 99re国产| 国产a级精品 | 黄色一区二区在线观看 | 国产91丝袜在线播放动漫 | 伊香蕉大综综综合久久啪 | 午夜成人免费电影 | 最近日韩中文字幕中文 | 91欧美精品 | 天天操天天操天天 | 日韩在线精品视频 | 色播五月激情综合网 | 91久久国产综合精品女同国语 | 91福利试看 | 亚洲日本国产 | 免费视频资源 | 日韩二区三区 | 一区二区 久久 | 成人网页在线免费观看 | 亚洲精品字幕在线 | 国产成人久久av | 国产成人一二片 | 伊人六月| 久久尤物电影视频在线观看 | 欧美日韩高清在线一区 | 97视频资源| 国产精品99页| 在线成人一区 | 99精品国产99久久久久久福利 | 国产999精品久久久久久麻豆 | 五月婷婷六月丁香在线观看 | 五月婷婷综合激情 | 国产黄色大片 | 亚洲精品乱码久久久一二三 | www成人精品 | 久久三级视频 | 五月天天色 | www.夜夜操.com | 91看片看淫黄大片 | 久久久鲁 | 亚洲欧美日韩精品久久奇米一区 | 婷婷精品视频 | 亚洲一区视频免费观看 | 色婷婷综合在线 | 国内精品一区二区 | 免费看片黄色 | 91成版人在线观看入口 | 免费一级日韩欧美性大片 | 成人在线免费视频 | 香蕉视频网站在线观看 | 午夜精品久久久久久久久久久久久久 | 国产成人黄色片 | 青青河边草观看完整版高清 | 天天操天天干天天操天天干 | 精品国产aⅴ麻豆 | 亚洲一级电影 | 天天搞天天干天天色 | 999国内精品永久免费视频 | 国产精品久久久久久久久久久久午夜片 | 午夜精品久久久久久久久久久久久久 | 欧美人操人 | 91人人澡人人爽 | 四虎小视频 | 国产精品视频最多的网站 | 亚洲丁香久久久 | 中文字幕在线观看视频免费 | 中文字幕 在线 一 二 | 少妇av网| 亚洲精品ww | 国产精品久久久久久久久久免费看 | 久久精品国产免费看久久精品 | 天天操网站 | 激情久久伊人 | 免费网站在线观看成人 | 国产精品中文字幕av | 黄色91免费观看 | 久久精品一二三区 | 成人高清在线 | 午夜久久 | 午夜视频免费 | 91精品网站在线观看 | 伊人婷婷色 | 亚洲 成人 欧美 | 日韩在线观看视频一区二区三区 | 99精品视频一区 | 高清国产午夜精品久久久久久 | 国产精品大片 | 国产精品无av码在线观看 | 国产一区二区三区免费视频 | 热久精品| 国产一级片不卡 | 日韩在线视频观看免费 | 四虎免费在线观看视频 | 伊人视频| 日韩在线免费看 | 夜夜天天干 | 国产精品免费一区二区三区 | 免费网站v | 美女在线观看网站 | 免费在线观看污网站 | 久久免费成人网 | 国产色在线 | 免费激情网 | 亚洲在线视频免费 | 国产最新在线视频 | 免费av的网站 | 欧美日本啪啪无遮挡网站 | 欧美日韩在线观看视频 | 久久久国产一区二区三区四区小说 | 亚洲精品女人 | 97国产在线视频 | 亚洲国产精品999 | 免费在线国产 | 天天爽天天爽 | 久久免费在线观看 | 永久免费精品视频网站 | 国产aa精品 | 天天艹日日干 | 国产手机在线播放 | 欧美一级黄色视屏 | 狠狠干成人综合网 | 欧美精品久久久久久久久久 | 久久国产精品一国产精品 | 国产不卡在线 | 国产aaa大片| 亚洲国内精品在线 | 成人试看120秒 | 久久综合九色九九 | 日日夜夜av | 亚洲精品在线观看视频 | 久久综合久色欧美综合狠狠 | 亚洲视频分类 | 久草精品视频 | 久久99日韩 | www.色就是色 | 黄色在线观看免费 | 日韩三区在线 | 中文字幕在线网 | av在线精品| 91视频国产免费 | 免费美女久久99 | 黄色片网站大全 | 婷婷国产一区二区三区 | 99精品偷拍视频一区二区三区 | 成人久久免费 | 天天操夜夜爱 | 丁香激情综合国产 | 国精产品满18岁在线 | 99视频在线观看免费 | 成人黄大片 | 激情动态 | 国产精品午夜av | 亚洲国产欧美一区二区三区丁香婷 | 91福利视频网站 | 粉嫩av一区二区三区四区在线观看 | 亚洲国产精品久久久久 | 菠萝菠萝蜜在线播放 | 午夜视频在线观看一区 | 久久久91精品国产一区二区三区 | 国产亚洲在线视频 | 久久久国产精品网站 | 久久黄色网址 | 成年人黄色免费网站 | 97在线观 | 亚洲成人黄色网址 | 青青河边草观看完整版高清 | 天天爽天天做 | 少妇自拍av | 国产精品成人久久久久久久 | 在线天堂v | 成人动漫一区二区 | 欧美 亚洲 另类 激情 另类 | 中文字幕888 | 国产精品a成v人在线播放 | 亚洲永久国产精品 | 亚洲精品视频在线播放 | 午夜精品一区二区三区免费视频 | 91麻豆网站 | 久久蜜臀一区二区三区av | 亚洲一区久久 | 成人播放器 | 国产人成精品一区二区三 | 国产在线a免费观看 | 三级动态视频在线观看 | 日韩电影在线观看中文字幕 | 欧美成年人在线视频 | 婷婷电影网| 日韩中文字幕在线不卡 | 色综合欧洲 | 最近日本mv字幕免费观看 | 久久久免费精品视频 | 九九热精| 97碰在线视频 | 久久开心激情 | 免费在线一区二区三区 | 97在线精品视频 | 天天爽夜夜爽精品视频婷婷 | 国产a国产a国产a | 国产成人精品一区在线 | 日韩激情精品 | 久久久一本精品99久久精品 | 国产视频一区二区在线 | 亚洲自拍自偷 | 久草久热| 精品一区 精品二区 | 国产精品久久久久久久久搜平片 | 四虎国产精品成人免费影视 | 久久99国产精品久久99 | 在线激情网 | 欧美日视频 | 在线免费高清一区二区三区 | 国产成人精品一区二区三区福利 | 久久综合九色综合97婷婷女人 | 久久久免费观看完整版 | 安徽妇搡bbbb搡bbbb | 日产乱码一二三区别在线 | 天天操天天添天天吹 | 丰满少妇在线观看 | 激情影院在线观看 | www.在线观看av | 在线观看视频97 | 国产123区在线观看 国产精品麻豆91 | 久久精品久久精品久久 | 亚洲黄色免费在线看 | 精品久久久久一区二区国产 | 国产伦理久久精品久久久久_ | 99精品亚洲 | 五月婷香| 亚洲第一区精品 | 粉嫩aⅴ一区二区三区 | 九九热在线免费观看 | 亚洲国产三级在线 | 亚洲在线精品视频 | 免费a v视频 | 日韩一级片网址 | 成人在线免费观看网站 | 91桃色免费视频 | 亚洲亚洲精品在线观看 | www.av中文字幕.com| 992tv在线 | 久久国产高清 | 黄色成人av在线 | 天天操 夜夜操 | 免费看网站在线 | 国产伦理精品一区二区 | 亚洲黄色免费网站 | 九九热精品视频在线播放 | 亚洲一区视频在线播放 | 中文字幕在线高清 | 99国内精品久久久久久久 | 91av在线精品 | 成人一级视频在线观看 | 在线日本看片免费人成视久网 | 欧美永久视频 | 日韩区在线观看 | 国产视频精品网 | 日韩成人在线一区二区 | 成人播放器 | 国产成人高清av | 在线视频日韩精品 | 天天干,夜夜操 | 久久国产精品99久久久久久丝袜 | 人人爽人人爽人人片 | 欧美日韩国产欧美 | 国产成人在线观看免费 | 高清国产在线一区 | 天天做日日爱夜夜爽 | 久久精品欧美一区二区三区麻豆 | 国产精品99久久久久久有的能看 | 国产区在线看 | 国产亚洲精品美女久久 | 狠狠躁夜夜a产精品视频 | 中文字幕在线播放第一页 | 久久精品人人做人人综合老师 | 日韩在线视频免费看 | 国产精品免费看久久久8精臀av | 日韩一级片网址 | 日韩城人在线 | 国产黄色片一级 | 久草电影免费在线观看 | 久久黄色免费视频 | 久久久国产影视 | 国产女人免费看a级丨片 | japanese黑人亚洲人4k | 午夜电影av | 97精品国产aⅴ| 婷婷色网| 国产精品一区二区在线播放 | 中国黄色一级大片 | 国产 欧美 日产久久 | 久久免费在线观看视频 | 综合久色 | 午夜视频一区二区 | 国产资源 | 国产在线小视频 | 91麻豆精品国产91久久久久 | 久久精品综合视频 | 免费电影播放 | 午夜18视频在线观看 | 永久免费精品视频网站 | 天天操天天干天天摸 | 国产精品亚洲精品 | 国产女人18毛片水真多18精品 | 国产精品毛片久久蜜 | 亚洲美女视频在线 | 中文字幕在线免费看 | 欧美日本国产在线观看 | 国产又粗又猛又黄视频 | 久久综合亚洲鲁鲁五月久久 | 亚洲视频免费在线看 | 成人久久久精品国产乱码一区二区 | 99视频在线观看免费 | 亚洲成av人影片在线观看 | 久久高清免费 | 久久综合九色综合欧美就去吻 | 欧美日韩一区二区三区在线免费观看 | 国产短视频在线播放 | 久青草视频| 婷婷激情五月综合 | 久久精品一区二区三区视频 | 日日夜夜狠狠操 | 999精品| 亚洲精品久久视频 | 亚洲成人av片在线观看 | 在线免费观看国产黄色 | 午夜久久久久久久久 | 在线免费观看黄网站 | 久久精品视频2 | 在线视频91| 国产一级二级在线播放 | 亚洲作爱| av天天干 | 91av免费在线观看 | 亚洲国产精品500在线观看 | 国产手机视频在线播放 | 中文字幕精品一区二区精品 | 人人爽人人爽人人爽学生一级 | 毛片www| 亚洲一区久久久 | 91精品天码美女少妇 | 亚洲精品国精品久久99热 | 在线看片视频 | 日韩亚洲国产中文字幕 | 国产亚洲精品久久久久久久久久 | 婷婷六月久久 | 日韩爱爱片 | 亚洲精品国产精品国自产 | 成人一区在线观看 | 最新日本中文字幕 | 月下香电影 | 亚洲一级二级 | 亚洲精品国产精品国产 | 国产亚洲精品美女久久 | 亚洲视频观看 | 成人久久久久久久久 | 三级av在线免费观看 | 全黄色一级片 | 色婷婷激情五月 | 99久久久免费视频 | 国产精品一区二区中文字幕 | 五月婷在线观看 | 五月天激情视频在线观看 | 最新日韩在线 | 狠狠色丁香婷婷综合 | 日日操网站 | 亚洲特级片 | 久草电影网 | 久爱综合 | 操操操av| 视频精品一区二区三区 | 国产精品99久久久久久有的能看 | 黄色大片中国 | 91麻豆高清视频 | 一区二区在线不卡 | 日韩免费网站 | 丁香久久激情 | 69亚洲视频 | 中文在线最新版天堂 |