在一張靜態圖中如何顯示點的動態資訊(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即可
這是: