2016年5月22日 星期日

範例 - 圖層使用

圖層的部分在"acs-api快速入門(4) - 畫圖與雜項"裡介紹了一些,不再贅述,這裡就直接切入進階的用法。

主要有兩個重點,1.) 與圖格游標互動 2.) 自訂畫圖類別



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
lib "personal";

public class MyScript extends CustomCorePersonal
{
 public void init()
 {
  CustomCore_UI_INIT();

  Layer layer = getLayer("K線");

  //加入自訂的畫圖元件
  layer.addSteady(new MyPaintElem());

  //用MotionAdapter偵測滑鼠HiLight的位置
  layer.setMotionAdapter(new MotionAdapter()
  {
   //當滑鼠移動X軸改變t時會呼叫這裡
   public void move(int t)
   {
    dbg.print("move " + " t:" + t);
   }
   //當滑鼠移動X或Y軸時會呼叫這裡
   public void move(int t, double value)
   {
    price = value;
    dbg.print("move " + " t:" + t + " v:" + value);
   }
   //當滑鼠點擊時會呼叫這裡
   public boolean click(int button, int t, double value) 
   {
    dbg.print("click button:" + button + " t:" + t + " v:" + value);
    return false;
   }
  });
 }

 double price = 0;

 //自訂畫圖類別
 class MyPaintElem extends SteadyElem
 {
  //當需要畫圖時會呼叫這裡,之後可以透過Java的畫圖函數任意揮灑
  public void paint(Graphics g, int runID, int idxFrom, int idxEnd, int idxHili, PaintBlockInfo block, PaintScaleInfo scalement)
  {
   int x1 = block.getBarPosCenterXByIdx(idxHili-idxFrom);
   int y1 = scalement.Vaule2Pos(price);

   g.setColor(black);
   g.drawString(""+price, x1, y1);
  }
 }
}

程式碼上已經有些註解可以輔助了解內容了,程式執行起來可以看到一個隨著滑鼠移動的價格提示字串。

沒有留言:

張貼留言

本人僅以個人知識經驗分享,多所無知,難免有錯,還請見諒。