【发布时间】:2010-11-08 07:10:12
【问题描述】:
我有一个问题,我的 TChart 附带的“标记”隐藏在栏后面......我添加了标记,它在栏后面绘制了自己。有什么办法把它放在前面吗?我希望任何人都可以帮助我..谢谢
【问题讨论】:
-
如果您还可以让我们知道您用于图表的组件,那将非常有帮助。
标签: delphi
我有一个问题,我的 TChart 附带的“标记”隐藏在栏后面......我添加了标记,它在栏后面绘制了自己。有什么办法把它放在前面吗?我希望任何人都可以帮助我..谢谢
【问题讨论】:
标签: delphi
我不知道您的图表条实例化的类是什么,但我知道 TLabel 是 TGraphicControl 的后代。从 TGraphicControl 继承的控件没有任何窗口句柄;因此,它们的父级负责在自己的画布上绘制它们。
当您在表单上放置标签时,表单是标签的父级,并将在其自己的画布上绘制标签。如果您放置一个窗口控件(从 TWinControl 类派生的控件,例如 TButton 或 TProgressBar),它们会在父画布上处理自己的绘图。这意味着,TGraphicControl 的后代将始终绘制在具有相同父窗口的 TWinControl 类的后代之后。
对您来说最简单的解决方案是使用 TStaticText,它提供与 TLabel 相同的功能,但它是 TWinControl 的后代。
可能还有其他适合您的解决方案,例如:您可以在表单上放置一个面板,然后将标签添加到面板,然后将面板置于前面,以将其显示在图表栏上方。当您将标签添加到面板时,其父级将设置为该面板控件,并且面板将负责绘制标签;或者您将图表栏设置为标签的父级;或者派生一个新的图形条类,并处理其 Paint 方法以直接在其画布上绘制文本。
【讨论】:
好的,现在我知道出了什么问题。您有三个条形系列,但第三个是从第二个中提取的标记。填满你的 3 bar 系列后尝试:
barseries2.marks.visible:=False;
barseries2.marks.visible:=True;
这应该重新绘制标记(虽然未经测试)。
【讨论】: