在一张静态图中如何显示点的动态信息(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即可
这是效果图:
在业务上由于需要对一张静态图中的某个元素进入分析,比如想知道某个点的坐标值(移动鼠标到该点上能够显示相关值),以及其背后的相关数据来源(在该点上单击鼠标,可以打开新窗口,显示更多的相关数据)。于是考虑在生成这张固定大小图的同时,把相应的点信息的绝对坐标值也一并记录下来,再利用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即可
这是效果图:
相关文章推荐
- 如何在cnblog里面动态显示防问量信息
- 如何用C#实现动态页面aspx的静态html转换
- 如何在静态博客hexo中只显示摘要信息
- 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站
- 使用canvas在一张图片上动态显示文字信息,并支持图片下载。
- 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站
- [转帖]如何将一张图片写入数据库SQL,并能正确在C#网页中显示
- DELPHI实现动态信息显示功能
- C# 动态添加SEO 信息,不和静态页面重复和叠加
- 如何动态不显示页面底部的版权所有等信息???
- 请问C#如何修改与显示文件的摘要信息
- 如何让Delphi的程序在SQL Server控制台中的进程信息显示应用程序的名字?
- 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站
- 【C#】如何在查询数据库表并显示到DataGridV中的进度条动态显示?
- 【phpcms-v9】如何在频道页面动态显示当前频道各个子栏目的部分信息
- 如何在html的div上动态显示带忽略信息的字符串。
- C#如何从文本文件读取信息并使用ArrayList类向用户显示该信息
- 静态页面如何显示用户信息
- 如何在jsp中实现时间的动态显示?
- 在delphi中如何动态建立类的实例