• <menu id="w2i4a"></menu>
  • logo Teechart應(yīng)用技術(shù)詳解——快速圖表制作工具

    文檔首頁>>Teechart應(yīng)用技術(shù)詳解——快速圖表制作工具>>Teechart圖表應(yīng)用技術(shù)詳解—第五章之應(yīng)用舉例

    Teechart圖表應(yīng)用技術(shù)詳解—第五章之應(yīng)用舉例


        Steema公司和慧都科技針對中國市場聯(lián)合推出中文版TeeChart for .NET圖表控件,一共漢化2000個詞條(17000個單詞),漢化文檔35000個單詞,包括控件設(shè)計(jì)時與運(yùn)行時的界面漢化以及控件使用向?qū)臋n的漢化,總漢化90%以上!

        TeeChart for .NET中文版讓您在使用和學(xué)習(xí)上沒有任何語言障礙,至少可以節(jié)省30%的開發(fā)時間。TeeChart for .NET中文版具有易上手,使用方便,穩(wěn)定性好,性價比高,價格優(yōu)惠等優(yōu)勢,并且針對Web應(yīng)用提供無限制服務(wù)器分發(fā)授權(quán)方式,非常有利于產(chǎn)品集成。

    點(diǎn)擊下載TeeChart for .NET最新試用版


    界面組件屬性設(shè)定

        從Delphi IDE中創(chuàng)建一個新工程,在主窗體中拖入TChart組件,并在Chart的Series選項(xiàng)卡中單擊Add按鈕增加一個新的序列Series: TMapSeries,其他組件的屬性參照下表設(shè)定,設(shè)計(jì)階段的界面如下圖所示。

    地圖顯示功能演示舉例組件屬性設(shè)置

    組件名屬性設(shè)置說明
    TChartNameChart1圖表組件
    TMapSeriesNameSeries1圖表中的序列顯示地圖
    TChartEditorName

    ChartEditor1


    圖表編輯器,在運(yùn)行中調(diào)用
    ChartChart1
    TTeeCommanderNameTeeCommander1圖表命令組件,運(yùn)行中使用,對圖表進(jìn)行有關(guān)操作
    ChartChart1
    TMarksTipToolNameChartTool1
    標(biāo)簽提示工具
    Active
    true
    TLegendScrollBarNameChartTool2圖例滾動棒工具
    Activetrue
    TCursorToolNameChartTool3十字光標(biāo)工具
    Activetrue
    TLightToolNameChartTool4燈光工具
    Activetrue
    TCheckBox

    Name


    CheckBox1~CheckBox5選擇框,參看實(shí)例設(shè)定
    TStatusBar

    Name


    StatusBar1狀態(tài)行用于提示運(yùn)行狀態(tài)


    地圖功能演示示例設(shè)計(jì)階段界面

    代碼設(shè)計(jì)

    • 地圖數(shù)據(jù)的聲明。作為地圖顯示測試數(shù)據(jù),在代碼段的var部分定義和聲明12個區(qū)域24組坐標(biāo),以數(shù)組變量形式描述:

    AX:array[0..13]of integer=(1,3,4,4,5,5,6,6,4,3,2,1,2,2);
    AY:array[0..13]of integer=(7,5,5,7,8,9,10,11,11,12,12,11,10,8);
    BX:array[0..8]of integer=(5,7,8,8,7,6,5,4,4);
    BY:array[0..8]of integer=(4,4,5,6,7,7,8,7,5);
    CX:array[0..15]of integer=(9,10,11,11,12,9,8,7,6,6,5,5,6,7,8,8);
    CY:array[0..15]of integer=(5,6,6,7,8,11,11,12,11,10,9,8,7,7,6,5);
    DX:array[0..7]of integer=(12,14,15,14,13,12,11,11);
    DY:array[0..7]of integer=(5,5,6,7,7,8,7,6);
    EX:array[0..10]of integer=(4,6,7,7,6,6,5,4,3,3,2);
    EY:array[0..10]of integer=(11,11,12,13,14,15,16,16,15,14,13);
    FX:array[0..11]of integer=(7,8,9,11,10,8,7,6,5,5,6,6)
    FY:array[0..11]of integer=(13,14,14,16,17,17,18,18,17,16,15,14);
    GX:array[0..11]of integer=(10,12,12,14,13,11,9,8,7,7,8,9);
    GY:array[0..11]of integer=(10,12,13,15,16,16,14,14,13,12,11,11);
    HX:array[0..9]of integer=(17,19,18,18,17,15,14,13,15,16);
    HY:array[0..9]of integer=(11,13,14,16,17,15,15,14,12,12);
    IX:array[0..14]of integer=(15,16,17,16,15,14,14,13,12,11,10,11,12,13,14);
    IY:array[0..14]of integer =(6,6,7,8, 8,9,10,11,12,11,10,9,8,7,7);
    JX:array[0..11]of integer=(15,16,16,17,17,16,15,13,12,12,14,14);
    JY:array[0..11]of integer=(8,8,9,10,11,12,12,14,13,12,10,9);
    KX:array[0..9]of integer=(17,19,20,20,19,17,16,16,17,16);
    KY:array[0..9]of integer=(5,5,6,8,8,10,9,8,7,6);
    LX:array[0..6]of integer=(19,20,21,21,19,17,17);
    LY:array[0..6]of integer=(8,8,9,11,13,11,10);
    Index:Integer=0;//全局變量,用于功能控制
    • 主要代碼。首先編寫一個子過程AddShape(X,Y:array of integer;Color:TColor;Labels String),用于多邊形區(qū)域繪制。然后在窗體的OnCreate方法中調(diào)用該過程繪制所有區(qū)域,代碼如下:

    procedure TForm1. FormCreate(Sender:TObject);
    AddShape(AX,AY,RGB(250,245,128),'北京');
    AddShape(BX,BY,RGB(250,245,132),'西安');
    AddShape(CX,CY,RGB(250,245,136),'上海');
    AddShape(DX,DY,RGB(250,245,140),'天津');
    AddShape(EX,EY,RGB(250,245,144),'拉薩');
    AddShape(FX,FY,RGB(250,245,148),'烏市');
    AddShape(GX,GY,RGB(250,245,152),'南京');
    AddShape(HX,HY,RGB(250,245,156),'昆明');
    AddShape(IX,IY,RGB(250,245,160),'武漢');
    AddShape(JX,JY,RGB(250,245,164),'廈門');
    AddShape(KX,KY,RGB(250,245,168),'???#39;);
    Chart1.Refresh;
    end;

        為了能夠在鼠標(biāo)移動過程中獲得區(qū)域的標(biāo)簽文字,可以利用TMarksTipTool工具的OnGetText事件中的Text:String參數(shù)實(shí)現(xiàn),并且根據(jù)獲得的區(qū)域標(biāo)簽Text結(jié)合Shapes的ByName[Text].ID屬性知道該區(qū)域的ID號,這時,設(shè)定一個全局變量Index傳給OnMouseMove事件,就可以在鼠標(biāo)移動過程中根據(jù)ID號改變鼠標(biāo)所在區(qū)域的顏色,以提高地圖的動態(tài)顯示效果。下述是在TMarksTipTool工具的OnGetText事件獲得Text后找出對應(yīng)的I號并傳給全局變量的過程:

    procedure TForm1.ChartTool1GetText (Sender:TMarksTipTool;
        var Text:String);
    var
    ID:integer;
    mstr:String;
    begin
    mstr:='標(biāo)簽:'+Text;//獲得的標(biāo)簽
    ID:=Series1 Shapes.BYName [Text]. ID;//由標(biāo)簽獲得區(qū)域ID
    Index:=ID;//傳給全局變量
    mstr:=mstr+'索引:'+ Inttostr( Series1.Shapes.ByName [Text].ID);
    StatusBar1.SimpleText:=mstr;
    Chart1.Refresh;
    end;

        然后在Chart的OnMouseMove事件中根據(jù)全局變量Index的值改變區(qū)域的頻色,達(dá)到加重顯示效果的目的,代碼如下:

    procedure TForm1.Chart1MouseMove(Sender: TObject;Shift:TShiftState; X,
         Y: Integer);
    var
    C:TColor;
    mstr:String;
    C:= Series1.Shapes.Polygon[Index].Color;//獲取區(qū)域當(dāng)前顏色
    Series1.Shapes.Polygon [Index].Color:=RGB(255,0,64);//改變當(dāng)前區(qū)域顏色
    Chart1.Refresh;//刷新
    Series1.Shapes.Polygon[Index].Color:=c;//恢復(fù)區(qū)域原始顏色
    Chart1.Refresh;
    StatusBar1.SimpleText:=mstr;//在狀態(tài)行顯示
    end;

        為了實(shí)現(xiàn)在程序運(yùn)行中的交互,程序中增加了TChartEditor組件用于動態(tài)編輯,在按鈕TButton2的OnClick事件中加入下列一行代碼即可:

    ChartEditor1.Execute;
    • 運(yùn)行效果。下圖是程序運(yùn)行后的效果,可以試著選擇檢查框的選項(xiàng)查看運(yùn)行結(jié)果。

    地圖顯示舉例運(yùn)行結(jié)果界面

    功能推廣

        采用本節(jié)的方法顯示地圖是比較簡單的,但是對于一個復(fù)雜的地圖來講這樣做是很費(fèi)勁的。如果已有地圖數(shù)據(jù)如SuperMap系統(tǒng)的數(shù)據(jù)庫表,那么可以借助本書中有關(guān)TeeChart與數(shù)據(jù)庫一章的描述利用這些數(shù)據(jù)。如果有些數(shù)據(jù)不配套,可以在了解表結(jié)構(gòu)的基礎(chǔ)上,編寫一個轉(zhuǎn)換接口,然后利用這個接口將數(shù)據(jù)讀入,就會取得事半功倍的效果。

    相關(guān)資料推薦:

    上一章:TeeChart的地圖顯示原理和代碼設(shè)計(jì)思路

    下一章:單圖表和多圖表的預(yù)覽和打印

    Teechart 2019資源合集

    =====================================

        現(xiàn)TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購,現(xiàn)在搶購可立享優(yōu)惠!

        關(guān)注慧聚IT微信公眾號???,了解產(chǎn)品的最新動態(tài)及最新資訊。

    慧聚IT

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();