您的位置:首页 > 编程语言 > Delphi

在一张静态图中如何显示点的动态信息(C#+Delphi)

2007-11-22 09:39 411 查看
在一张静态图中如何显示点的动态信息(C#+Delphi)
在业务上由于需要对一张静态图中的某个元素进入分析,比如想知道某个点的坐标值(移动鼠标到该点上能够显示相关值),以及其背后的相关数据来源(在该点上单击鼠标,可以打开新窗口,显示更多的相关数据)。于是考虑在生成这张固定大小图的同时,把相应的点信息的绝对坐标值也一并记录下来,再利用html中的map功能,就可以实现在一张静态图中显示点的动态信息。

分为三步实现:1 生成图中点的绝对坐标值(Delphi中完成),2 生成图片,关联坐标值及点的单击事件(Delphi中完成),3 响应点的单击事件(C#)

1 生成图中点的绝对坐标值(Delphi中完成)
得到TChart图片上热点的绝对坐标值,关键代码如下:

[align=left]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;[/align]

2 生成图片,关联坐标值及点的单击事件(Delphi中完成)
把上述的图片和热点信息保存下来,存成html文件。图片文件名为:test.bmp,共有9个点,形式如下:

[align=left]<!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>

[/align]

3 响应点的单击事件(C#)
ShowDialog即可

这是效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: