バージョン

各マップ要素に色を付ける

塗りつぶしモードの使用の外に、 MapElement オブジェクトに色を付けるもうひとつの方法は、エレメントに直接色を付ける方法です。これを実行するには、エレメントの Fill プロパティを使用したいブラシに設定します。

以下のコードは、マップ 要素を条件的に色付けする方法を示します。MapLayer オブジェクトの Imported イベントでは、各要素のプロパティ値がチェックされ、要素は要素の Fill プロパティを設定して色付けされます。

Visual Basic の場合:

' 女性と男性の比率に応じてマップ エレメントに色を付けます
Private Sub statesLayer_Imported(ByVal sender As Object, ByVal e As MapLayerImportEventArgs)
        Dim layer As MapLayer = TryCast(sender, MapLayer)
        ' ブラシを宣言します
        Dim b1 As New SolidColorBrush(Colors.Orange)
        Dim b2 As New SolidColorBrush(Color.FromArgb(255, 30, 144, 255))
        For Each element As MapElement In layer.Elements
                Dim males As Double = CDbl(element.GetProperty("MALES"))
                Dim females As Double = CDbl(element.GetProperty("FEMALES"))
                Dim ratio As Double = Math.Round(females / males, 2)
                element.ToolTip = String.Format("{0:F2}", females / males)
                element.Caption = DirectCast(element.GetProperty("STATE_ABBR"), String)
                ' 比率をチェックして色を設定します
                If ratio > 1 Then
                        element.Fill = b1
                Else
                        element.Fill = b2
                End If
        Next
End Sub

C# の場合:

// 女性と男性の比率に応じてマップ エレメントに色を付けます
void statesLayer_Imported(object sender, MapLayerImportEventArgs e)
{
   MapLayer layer = sender as MapLayer;
   // ブラシを宣言します
   SolidColorBrush b1 = new SolidColorBrush(Colors.Orange);
   SolidColorBrush b2 = new SolidColorBrush(Color.FromArgb(255, 30, 144, 255));
   // 各マップ エレメントをチェックします
   foreach (MapElement element in layer.Elements)
   {
      double males = (double)element.GetProperty("MALES");
      double females = (double)element.GetProperty("FEMALES");
      double ratio = Math.Round(females / males, 2);
      element.ToolTip = string.Format("{0:F2}", females / males);
      element.Caption = (string)element.GetProperty("STATE_ABBR");
          // 比率をチェックして色を設定します
      if (ratio > 1)
         element.Fill = b1;
      else
         element.Fill = b2;
   }
}
XamMap Color Individual Map Elements 01.png