UltraChart中如何自定義標籤?

      我們生成的ColumnChart,正常情況下X軸上既包括所綁定數值列名稱,又包括Series的名稱。而相同的數據,在Excel圖表中所生成圖表,X軸上通常只會顯示Series的名稱,並不包含所綁定數值列名稱。這種情況下,我們要得到後者那樣的效果,可通過以下代碼方便的控制實現:

         this.UltraChart1.Axis.X.Labels.Visible = false;

         this.UltraChart1.Axis.X.Labels.SeriesLabels.Visible = true;

     通過設置屬性,可很方便的對標籤顯示樣式進行設置,如果我們要自定義ColumnChart或其它圖表的的標籤,顯示特定的信息,採用簡單的屬性設置沒法達成目的,該怎麼實現呢?大致說來我們要實現IRenderLabel接口以自定義標籤顯示格式,然後設置X軸的標籤顯示格式爲我們所定義的樣式。

      IRenderLabel接口只有一個成員ToString(Hashtable context)contest包含了要處理標籤的信息,如context["ITEM_LABEL"]代表列名,context["DATA_VALUE"]代表特定行列的具體值。ToString(Hashtable context)的返回值將被寫到標籤上,例如其返回值總是“Hello world,則“Hello world”將重複顯示在X軸線上。以下代碼具體實現了IRenderLabel接口。

using Infragistics.UltraChart.Resources;

...

public class MyLabelRenderer : IRenderLabel

{

    public string ToString(Hashtable context)

    {

           double dataValue = (double)context["DATA_VALUE"];

           if (dataValue > 75)

                  return dataValue.ToString() + " [Very High]";

           else if (dataValue > 50)

                  return dataValue.ToString() + " [High]";

           else if (dataValue > 25)

                  return dataValue.ToString() + " [Medium]";

           else if (dataValue >= 0)

                  return dataValue.ToString() + " [Low]";

           else        

                  return dataValue.ToString() + " [Negative]";

    }

}

然後我們所要做的就是設置圖表軸線的ItemFormatString爲一特定字符,此字符不能與圖表已有名稱相沖突,並且此字符要包含在"<" ">"字符間;然後要創建一Hashtable實例,其鍵名稱與設置的圖表軸線的ItemFormatString一致,鍵值是實現IRenderLabel接口的類實例;最後我們要設置圖表的LabelHash屬性爲Hashtable實例,具體實現代碼如下:

           this.ultraChart1.Axis.Y.Labels.ItemFormatString = "<MY_VALUE>";

           this.ultraChart1.Axis.X.Labels.ItemFormatString = "<MY_VALUE>";

           Hashtable MyLabelHashTable = new Hashtable();

           MyLabelHashTable.Add("MY_VALUE", new MyLabelRenderer());

           this.ultraChart1.LabelHash = MyLabelHashTable;

           this.ultraChart1.DataSource = GetColumnData();

最終我們所得到的圖形效果參見圖1

 

圖1 自定義軸線標籤效果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章