如何:跨多個形狀圖指定一致的色彩 (報表產生器 2.0)
在非形狀圖上,您可以根據圖表中的數列索引,從調色盤選取新的色彩。例如,圖表上的第一個數列將會對應到調色盤中的第一個色彩。不過,對於形狀圖來說,這個行為是不同的。在形狀圖上,調色盤中的每個色彩都會對應到資料集中的資料點。例如,資料點 1 對應到調色盤中的第一個色彩,資料點 2 對應到調色盤中的第二個色彩等等。
如果資料點沒有值,則不會顯示在形狀圖上。也就是說,資料點會略過而不顯示任何色彩。例如,如果點 2 的值為零,點 1 將會對應到調色盤中的第一個色彩,而點 3 將會對應到調色盤中的第二個色彩。這個方法相當實用,因為不需要繪製空點時,圓形圖之資料集中的空點不一定要使用調色盤色彩。
副作用是,在報表中顯示多個圓形圖時,圓形圖可能會針對具有相同類別目錄群組的資料點顯示不同的色彩。若要解決這個問題,您需要定義對應到類別目錄群組的個別色彩,而不是個別的資料值。
圖例會連接到數列,因此,您針對數列指定的任何色彩都會自動顯示在圖例上。
跨多個形狀圖指定一致的色彩
以滑鼠右鍵按一下報表主體的外面,然後選取 [報表屬性]。
在 [程式碼] 中,將下列程式碼輸入到文字方塊中。
Private colorPalette As String() = {"Color1", "Color2", "Color3"} Private count As Integer = 0 Private mapping As New System.Collections.Hashtable() Public Function GetColor(ByVal groupingValue As String) As String If mapping.ContainsKey(groupingValue) Then Return mapping(groupingValue) End If Dim c As String = colorPalette(count Mod colorPalette.Length) count = count + 1 mapping.Add(groupingValue, c) Return c End Function
[!附註]
您需要將 "Color1" 字串取代成您自己的色彩。您可以使用具名色彩 (例如 "Red"),或者您可以使用代表色彩的六位數十六進位值 (例如 "#FFFFFF" 代表黑色)。如果您已經定義三個以上的色彩,您將需要擴充色彩的陣列,讓陣列中的色彩數目符合形狀圖中的點數。您可以指定包含具名色彩或色彩十六進位表示法之字串值的逗號分隔清單,以便將新的色彩加入到陣列中。
按一下 [確定]。
以滑鼠右鍵按一下形狀圖,並選取 [數列屬性]。
在 [填滿] 中,按一下 [運算式] (fx) 按鈕來編輯 [色彩] 屬性的運算式。
輸入下列運算式,其中 "MyCategoryField" 是在類別目錄放置區中顯示的欄位:
=Code.GetColor(Fields!MyCategoryField)