在一張靜態圖中如何顯示點的動態資訊(C#+Delphi)

來源:互聯網
上載者:User

在一張靜態圖中如何顯示點的動態資訊(C#+Delphi)

  在業務上由於需要對一張靜態圖中的某個元素進入分析,比如想知道某個點的座標值(移動滑鼠到該點上能夠顯示相關值),以及其背後的相關資料來源(在該點上單擊滑鼠,可以開啟新視窗,顯示更多的相關資料)。於是考慮在產生這張固定大小圖的同時,把相應的點資訊的絕對座標值也一併記錄下來,再利用html中的map功能,就可以實現在一張靜態圖中顯示點的動態資訊。

  分為三步實現:1 產生圖中點的絕對座標值(Delphi中完成),2 產生圖片,關聯座標值及點的單擊事件(Delphi中完成),3 響應點的單擊事件(C#)

1 產生圖中點的絕對座標值(Delphi中完成)
  得到TChart圖片上熱點的絕對座標值,關鍵代碼如下: 

procedure TSVGExportForm.Button22Click(Sender: TObject);
var
  temps1: string;
  i,x,y: integer;
begin
  temps1 := ' <img id="aaa" src="test.bmp" usemap="#map1" >   ' ;
  temps1:=temps1 + '<map name="map1">';
  for i:=0 to chart1.Series[0].Count-1 do
  begin
    x:=chart1.Series[0].CalcXPos(i);
    y:=chart1.Series[0].CalcYPos(i);
    temps1:=temps1+'<area href='+'/page4?1='+
                         '&2='+chart1.Series[0].XLabel[i]+'" target="_blank"'+
                         ' shape="circle" coords="'+inttostr(X)+','+inttostr(Y)+',2" '+
                         'alt="'+chart1.Series[0].XLabel[i]+','+Format('%12.4f', [chart1.Series[0].YValue[i]])+'>';
  end;
  temps1:=temps1+'</map>';
end;

 

2 產生圖片,關聯座標值及點的單擊事件(Delphi中完成)
  把上述的圖片和熱點資訊儲存下來,存成html檔案。圖片檔案名稱為:test.bmp,共有9個點,形式如下: 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.3132" name=GENERATOR></HEAD>
  <BODY>

<img id="aaa" src="test.bmp" usemap="#map1" >
    
<map name="map1">
<area href="/page4?1=&2=1" target="_blank" shape="circle" coords="67,68,2" alt="1,     99.9800">
<area href="/page4?1=&2=2" target="_blank" shape="circle" coords="170,50,2" alt="2,    100.0000">
<area href="/page4?1=&2=3" target="_blank" shape="circle" coords="272,504,2" alt="3,     99.5000">
<area href="/page4?1=&2=4" target="_blank" shape="circle" coords="375,68,2" alt="4,     99.9800">
<area href="/page4?1=&2=5" target="_blank" shape="circle" coords="478,232,2" alt="5,     99.8000">
<area href="/page4?1=&2=6" target="_blank" shape="circle" coords="581,77,2" alt="6,     99.9700">
<area href="/page4?1=&2=7" target="_blank" shape="circle" coords="684,50,2" alt="7,    100.0000">
<area href="/page4?1=&2=8" target="_blank" shape="circle" coords="786,59,2" alt="8,     99.9900">
<area href="/page4?1=&2=9" target="_blank" shape="circle" coords="889,50,2" alt="9,    100.0000">
</map>

  </BODY>

</HTML>

 

3 響應點的單擊事件(C#)
ShowDialog即可

這是: 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.