delphi中,如何对CHART图表进行单点添加注释?

liuhuan992 2009-06-24 08:15:55

如图,
我所说的不是给所有点都添加注释,只是想把给定的几个点,或一个点添加上注释!
不是如下代码所得出的结果:
Series.Marks.Visible:=true;
Series.Marks.Style:=smsValue;
...全文
353 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
火龙岛主 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 liuhuan992 的回复:]
SmallHand 请看图片,我不是想添加label项,是添加注释项,是图中的黄色标释44!
[/Quote]
我做的就是图上的效果,你的图实际上就是添加了点啊,设置了三角形Diamand的形状并显示Mark.
告诉你的方法是动态添加的,你也可以手工尝试达到你的效果!
xinxinshou2009 2009-06-24
  • 打赏
  • 举报
回复
用这种方法添加series,有很多好处。在不影响外观的前提下,可以更方便的进行操作,不光是添加注释,而且可以很方便的计算数量:series2.count。另外添加新的series,也可以随意改变某些series的边框颜色
xinxinshou2009 2009-06-24
  • 打赏
  • 举报
回复
给你一个很简单的思路,代码我就不写了。

再添加一个series2,所有取值都跟series1相同,这样的话,在图上series2就完全覆盖住series1了,表面上看起来,还是只有一个series。然后对series2的取值进行筛选,只留下几个你所需的点,这样操作,一点都不影响外观,反而你可以在筛选出来的series2上可以进行全部的marks操作
liuhuan992 2009-06-24
  • 打赏
  • 举报
回复
SmallHand 请看图片,我不是想添加label项,是添加注释项,是图中的黄色标释44!
火龙岛主 2009-06-24
  • 打赏
  • 举报
回复
var
vPoint: TPointSeries;
begin
vPoint := TPointSeries.Create(chart1);
vPoint.ParentChart := chart1;
vPoint.Title := 'xxxx';
vPoint.Marks.Visible := true;
vPoint.AddXY( XValues.Last+1,
(YValues.Last/YValues.Multiplier)+(Random(ChartSamplesMax)-(ChartSamplesMax/2)),
'',clTeeColor);

...
end;
liuhuan992 2009-06-24
  • 打赏
  • 举报
回复
Series1.Marks.Draw;//语句是没有后面的参数项的(i,clWhite,'',Series1.Marks.Positions.Position[i]);
bdmh 2009-06-24
  • 打赏
  • 举报
回复
使用Series1.Marks.Draw,必须将marks的visible设为true才行
liuhuan992 2009-06-24
  • 打赏
  • 举报
回复
很感谢楼上bdmh 的热心,也很想说你是正确的,
首先,
Chart1.Canvas.TextOut(x,y,'字符串');//x,y就是你要取得的点的坐标的,x,y值
是可以使用的,但,chart上点的座标不好把握,
其次,
Series1.Marks.Draw(i,clWhite,'',Series1.Marks.Positions.Position[i]);
该语句为病句,无法执行,
在delphi中,series1.marks.draw;只有该方法,所以后续的参数无法使用!
还望各位前辈写出正解,谢谢!
bdmh 2009-06-24
  • 打赏
  • 举报
回复

var
i:Integer;
begin
for i :=0 to Series1.XValues.Count - 1 do
begin
Chart1.Canvas.TextOut(x,y,'字符串');//x,y就是你要取得的点的坐标的,x,y值
end;
end;


或者,如果可以的话,你可以替换marks的文字,换成你的文字

var
i:Integer;
begin
for i :=0 to Series1.XValues.Count - 1 do
begin
Series1.Marks.Draw(i,clWhite,'',Series1.Marks.Positions.Position[i]);
end;
end;
liuhuan992 2009-06-24
  • 打赏
  • 举报
回复
能否写出相应代码?
小弟不胜感激!
bdmh 2009-06-24
  • 打赏
  • 举报
回复
不能

可以根据点的坐标,在Chart1.Canvas上 画出你的提示
火龙岛主 2009-06-24
  • 打赏
  • 举报
回复
原理是在需要添加注释的地方添加点,使点的Mark.Visible := True;
这样就可以实现你想要的结果了。
换一个角度,可能会有意想不到的效果。
liuhuan992 2009-06-24
  • 打赏
  • 举报
回复
xinxinshou2009 你所说的方法,也是一种恩路,但如果如我图中所示的那样,我只显示一个点的注释,我就要进行多次的点删除工作,如此就会进行大量的操作,
而对于smallhand所述操作倒是一个简单的算法.
Delphi高级辅助工具精解》,国铁道出版社出版,作者:谭燕,赵磊,李之明。简介: Delphi作为一个面向对象程序设计的系统构建的集成工具,已经拥有了比较稳定的第三方工具,借助于这些工具可以最大限度地提高相应的应用程序开发效率。本书针对这一特点, 重点对人秋IDE(集成开发环境)增强工具的GExperts、最受欢迎的第三方代码编写工具CodeRush、调试工具CodeSite和系统建模工具ModelMaker做了比较全面而系统的介绍。 全书语言通俗,重点突出,实用性强,适合初、Delphi程序开发人员参阅。 目录:第1章 领略GExperts 1-1 序 言 1-2 GExperts的安装 1-3 Delphi IDE的GExperts 1-4 功能组件的介绍 1-4-1 Procedure List(过程列表工具) 1-4-2 Expert Manager(专家管理器) 1-4-3 Grep search 1-4-4 Message Dialog(提示对话框制作) 1-4-5 Backup project(项目备份) 1-4-6 Clear directories(清除目录的垃圾文件) 1-4-7 Clipboard History(剪贴板历史) 1-4-8 Favorite Files(收藏的文件) 1-4-9 Urce Export(源代码文件输出)1-4-10 Code Librarian(代码库工具)1-4-11 ASCII chart(ASCII图表) 1-4-12 Replace Components(组件替换工具) 1-4-13 Component Grid(组件网格) 1-4-14 Components To Code(产生组件的代码) 1-4-15 Editor Experts(编辑器专家) 1-5 GExperts的配置环境 1-5-1 File Location(文件及目录位置) 1-5-2 Editor Experts(代码编辑器专家)1-5-3 IDE扩展 1-5-4 Palette(面板) 第2章 初见CodeRush 2-1 初见CodeRush 2-1-1 CodeRush概述2-1-2 什么是新的内容 2-1-3 安装CodeRush 2-2 键盘模板(Key Templates) 2-2-1 键盘模板的介绍 2-2-2 使用模板生成变量2-2-3 使用模板生成方法2-2-4 设置变量 2-2-5 返回变量的自动化 2-2-6 定义程序结构 2-2-7 键盘模板的配置2-2-8 Template Coach2-2-9 Clipboard History 2-2-10 Bookmarks 2-2-11 Diagram repository 2-2-12 Flowchart 2-2-13 Samples(示例) 2-2-14 Sequence(顺序)2-2-15 Files(文件查找与显示) 2-2-16 Search Files(搜索文件)2-2-17 Statistics(统计工具) 2-2-18 尾声 第3章 CodeRush的窗体设计工具 3-1 序 言 3-2 Align Palette 3-3 Anchor Palette3-4 LOCK/Unlock Controls 3-5 Magnifier(放大器) 3-6 Quick Connect(快速连接) 3-7 Reveal Links 3-8 Show Active DataSets(显示激活的数据集)3-9 Tab Order 第4章 CodeRush的代码辅助增强工具 4-1 程序代码结构增强显示 4-1-1 配置环境 4-1-2 Block Selection(选择块) 4-1-3 Colors(颜色) 4-1-4 Jumping(跳转结构) 4-1-5 Lines(边线) 4-1-6 Options(选项)4-1-7 Timing(时间参数) 4-2 代码编写的自动化 4-2-1 Autofill(自动代码填充) 4-2-2 变量输入的自动化 4-2-3 函数输入自动化 4-2-4 过程、函数粘贴的自动化 4-2-5 注释自动化 4-2-6 结构代码输入自动化 第5章 首屈一指的调试工具CodeSite 5-1 序 言 5-2 CodeSite简介 5-2-1 CodeSite Object介绍 5-2-2 利用CSGlobalObject组件发送消息 5-2-3 利用CSObject组件发送消息 5-2-4 CSGlobalObject与CSObject组件的区别 5-3 CodeSite 调试消息发送 5-3-1 消息的类别 5-3-2 更多的消息发送方法 5-3-3 AddCheckPoint方法 5-

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧