TeeChart Pro VCL/FMX教程(五):图例设计

非 Y 不嫁゛ 提交于 2019-12-10 05:49:02

下载TeeChart Pro VCL/FMX最新版本

图例控件

样式选项卡

    可以通过图表编辑器,图表选项卡,图例页面访问图例参数。

图例样式

    图例默认样式“自动”将在图表中只有一个系列时将系列点值放入图例中。当图表包含多个系列时,“自动”会将系列名称放入图例中。在编辑器中,使用Dropdown Combobox获取默认值以外的值。如果更改图例样式以显示值,并且图表中有多个系列,TeeChart Pro将显示第一个系列的值。您可以使用自定义选项修改显示。

Chart1.Legend.LegendStyle := lsLastValues;

//Puts the last value of each Series in the Legend box

文本样式

    有关可能的图例文本样式的列表,请参阅TextStyle属性。文本样式格式化图例中的系列条目(例如,将值显示为总计的百分比等)。

定位图例(位置选项卡选项)

对齐

    使用对齐属性(顶部,底部,左侧和右侧)有4个可用的默认位置。右边是默认位置。图例的默认定位始终位于图表之外。有关定位图例的详细信息,请参阅有关自定义图例的部分。

调整图表

    大小调整大小图表属性,如果未启用,将在图表框架区域内绘制图例。虽然这对于某些Legend定位要求可能是令人满意的,但是通过使用Legend HorizMargin和VertMargin属性可以更好地控制与Chart框架相关的Legend定位。

HorizMargin和VertMargin

    Horizmargin适用于左右对齐的图例。VertMargin适用于顶部和底部对齐的图例。更改Horizmargin属性值将移动Chart框架相对于Legend,反之亦然。因此,将Horizmargin值设为负值会将图表移动到图例上(增加图表矩形区域的大小)。但是,这些属性不适用于在图表上重新定位图例,为实现此目的,最好使用运行时自定义图例内容中概述的技术。

自定义位置

    将Legend CustomPosition属性设置为true,然后将Legend的Top和Left像素坐标设置为自定义位置。

 With Chart1.Legend do
  Begin
    CustomPosition:=True;
    Top:=100;
    Left:=100;
  end;

水平图例中的行数

    图例水平对齐(顶部或底部)时,可以指定行数:

Chart1.Legend.MaxNumRows:=3;

    默认情况下,MaxNumRows为0(零),这意味着Legend将根据需要使用尽可能多的行显示所有值。

颜色框修改(编辑器的符号选项卡)

    使用Colorwidth属性设置图例中颜色框的宽度。

With Chart1.Legend do
  Begin
    //move the colour boxes to the right of the value list
    Symbol.Position:=spRight;

    //set the boxes as continuous
    Symbol.Continuous:=True;

    //Make the boxes wider
    Colorwidth:=40;
  end;

  //Hide the Pen of the line between the boxes
  //The line depends on the Series itself (here a Line Series)

  Series1.LinePen.Visible:=False;

在运行时自定义图例内容

    Legend事件提供完全控制Legend外观和内容的选项。

OnGetLegendRect事件

    图例外部矩形允许更改“图例”框的整体大小和位置。与OnGetLegendPos结合使用以重新定位图表图例和内容。

    例如。您可以使用CustomPosition更无缝地实现以下移动(请参阅上文)

procedure TForm1.Chart1GetLegendRect(Sender: TCustomChart; var Rect: TRect);
begin
  //This moves the Legend box to the left (leaving the contents where they were !)
  //Set Chart1.Legend.ResizeChart := False; to disable resizing of the Chart
  //thus placing the Legend inside the Chart rectangle
  Rect.Left := Rect.Left - 100;
  Rect.Right := Rect.Right - 100;
end;

OnGetLegendPos事件

    修改图例内容的位置。以下示例可与上面的代码一起使用,将Legend内容移动到新的Legend矩形。

procedure TForm1.Chart1GetLegendPos(Sender: TCustomChart; Index: Integer;
  var X, Y, XColor: Integer);
begin
  //Moves the Legend contents to the left by 100 pixels use with OnGetLegendRect
  //Does not move colour boxes.
  X := X - 100;
end;

OnGetLegendText事件

    修改图例内容的文本。

procedure TForm1.Chart1GetLegendText(Sender: TCustomAxisPanel;
  LegendStyle: TLegendStyle; Index: Integer; var LegendText: String);
begin
  //Modify Legend text
  LegendText := LegendText + IntToStr(Index);
end;

    将图例放置在图表矩形区域内时,请记住图例在系列和轴之前绘制,并且将出现在任何交叉点的任何一个下方。

OnClickLegend事件

    单击图例时拾取图例项目。

procedure TForm1.Chart1ClickLegend(Sender: TCustomChart;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Var tmp:Integer;
begin
  tmp:=Chart1.Legend.Clicked( x,y ) ;

  if tmp<>-1 then 
     ShowMessage( 'Clicked legend item: '+ Chart1.FormattedLegend( tmp ) );
end;

 查看Teechart.Net系列教程>>

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!