線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1456
推到 Plurk!
推到 Facebook!

Kylix 3 圖表(Chart) 解決方案

 
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-09 01:48:54 IP:163.32.xxx.xxx 未訂閱
■ Kylix 3 上並無 Chart 元件,但好玩的地方就在可發揮自己的創意,所以閒來無事寫了一個簡單的Function , 以 Image 元件為 Base , 然後加上簡單的國小數學,就寫成了一個 Chart Solution,功能雖簡單,但以可以滿足初步的需求,本範例資料來源為同一ListBox (Items->Count 不限數量),繪圖輸出於三個不同Size 的 Image , 函式會自動計算繪圖比例 .... ■ 函式名稱 MyChart(TStrings *MyStrings , TImage *MyImage)
//--------------------------------------------------------------------
void __fastcall TForm1::MyChart(TStrings *MyStrings , TImage *MyImage)
{
  float w_unit=MyImage->Width/(MyStrings->Count*2);      int max_h=0;
  for (int i=0 ; i<=MyStrings->Count-1;i++)
      {
        if (StrToInt(MyStrings->Strings[i])>max_h)
            max_h=StrToInt(MyStrings->Strings[i]);
      }      float h_unit=(MyImage->Height*0.8)/max_h;
  //ShowMessage(IntToStr(h_unit));
  float y1,y2;      for (int i=0 ; i<=MyStrings->Count-1;i++)
      {
        y1=MyImage->Height-0;
        y2=MyImage->Height-StrToInt(MyStrings->Strings[i])*h_unit;
        if (y2==MyImage->Height) y2=MyImage->Height-1;
        String text=MyStrings->Strings[i];            MyImage->Canvas->Pen->Color=clBlue;
        MyImage->Canvas->Pen->Width=w_unit;
        MyImage->Canvas->MoveTo(i*2*w_unit+w_unit,y1);
        MyImage->Canvas->LineTo(i*2*w_unit+w_unit,y2);
        MyImage->Canvas->TextOut(i*2*w_unit+w_unit-2,y2-15,text);
      }
} 
■ 函式特性 可自動按照輸出的 Image Size 自動分配 Chart 內容比例 ■ 使用方法(參照上圖) 資料來源 : TStrings (如 ListBox 之 Items 或 Memo 之 Lines) 繪圖輸出 : TImage 如上圖中 Button 中呼叫該函式三次 來源都是 ListBox1 輸出於三個不同 Size 的 Image 上 Button 之 OnClick 內容如下
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  MyChart(ListBox1->Items,Image1);
  MyChart(ListBox1->Items,Image2);
  MyChart(ListBox1->Items,Image3);
}
 
■ 功能加強 在您的創意之中 .... (Kylix 源碼任務 http://home.kimo.com.tw/bruce0211/Kylix/ ) 發表人 - bruce0211 於 2002/11/09 02:14:23
系統時間:2024-04-20 15:56:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!