FAQ
ColorRamp オブジェクトの利用

ナレッジ番号:2684 | 登録日:2023/05/29 | 更新日:2023/12/28

概要

IColorRamp インターフェイスをサポートしているオブジェクトは、ArcObjects の至るところで使用される色の連なりを定める単純な方法を提供します。たとえば、FillSymbol クラスが実装している IGradientFillSymbol インターフェイスの ColorRampプロパティに 直接カラー ランプを設定 したり、ClassBreaksRenderer で使用する色を定めるカラー ランプを作成することができます。個々の ColorRamp オブジェクトは ColorRamp を形成するカラーを決定する基準を定める様々な方法を提供します。 ランダム カラーは RandomColorRamp によって作成することができます。連続した色は AlgorithmicColorRamp によって作成することができます。

Image

Image

PresetColorRamp クラスは13の色を含み、ArcView GIS 3.x のカラー ランプに類似したものの作成を可能にしています。さらに MultiPartColorRamp を利用すると別のカラー ランプを連結してひとつのカラー ランプをつくることができます。 カラー ランプは、ArcObjects で以下のようにして使用されます。

カラー ランプを各レンダラーに適用する例については、下記「関連情報」にある FAQ でご確認ください。
  • カラー ランプ内の個々の色にアクセスする
  • プロパティとして、または他のオブジェクトのメソッド内でカラー ランプ オブジェクトを直接使用する

まず最初にカラー ランプが作られ、そして個々のカラーがアクセスされます。 たとえば、UniqueValueRenderer を作成する時、そのシンボル配列の各々のシンボルは個別にセットする必要がありますが、おそらくカラー ランプから色を取り出して使うでしょう。 以下のステップを見てください。

  1. カラー ランプから個々の色を取り出すには、カラー ランプから取り出したいカラー オブジェクトの数に従って、Size プロパティをセットします。
  2. CreateRamp メソッドを呼びます(Color と Colors プロパティが埋まります)。Color プロパティは読出し専用のゼロベースの(インデックスがゼロから始まる)Color オブジェクトの配列を保持していますが、インデックスを指定して取得します。

以下のコード例は、RandomColorRamp の作成とそのカラー ランプから10 のカラーを生成する方法を示しています。メソッドが呼ばれたあと、CreateRamp メソッドで使用された論理型のパラメーターが検査され、カラーが生成されたことを保証しています。

 
IRandomColorRamp pColorRamp = new RandomColorRampClass();
pColorRamp.Size = 10;
bool bOK;
pColorRamp.CreateRamp(out bOK);
if ((bOK))
{
    // ここで Color の配列にアクセスします。例えば、シンボルの配列やマップ レイヤーに対して色を設定するなどします。
    for (int i = 0; i <= pColorRamp.Size - 1; i++){}
}
Dim pColorRamp As IRandomColorRamp = New RandomColorRampClass()
pColorRamp.Size = 10
Dim bOK As Boolean
pColorRamp.CreateRamp( bOK)
If (bOK) Then
    ' ここで Color の配列にアクセスします。例えば、シンボルの配列やマップ レイヤーに対して色を設定するなどします。
    For i As Integer = 0 To pColorRamp.Size - 1 Step i + 1
    Next
End If

Colors プロパティはカラーの列挙を返し、それは手順間で渡される軽量オブジェクトとして便利です。 次いで、カラー ランプオブジェクトは直接使用することができます、たとえば、IGradientFillSymbol の ColorRamp プロパティに特定のカラー ランプ オブジェクトをセットすることができます。AddRamp メソッドのパラメーターとしてオブジェクトを渡すことによって、MultiPartColorRamp もカラーランプオブジェクトを直接使用できます。

以下のコード例は、AlgorithmicColorRamp で作成された GradientFillSymbol オブジェクトを示しています。IntervalCount がセットされて、それにより GradientFill 内のカラーの総数が決定されます。

IAlgorithmicColorRamp pAlgoRamp = new AlgorithmicColorRampClass();
pAlgoRamp.FromColor = myFromColorObject;
pAlgoRamp.ToColor = myToColorObject;
IGradientFillSymbol pGradFill = new GradientFillSymbolClass();
pGradFill.ColorRamp = (IGradientFillSymbol) pAlgoRamp;
pGradFill.IntervalCount = 5;
 
Dim pAlgoRamp As IAlgorithmicColorRamp = New AlgorithmicColorRampClass()
pAlgoRamp.FromColor = myFromColorObject
pAlgoRamp.ToColor = myToColorObject
Dim pGradFill As IGradientFillSymbol = New GradientFillSymbolClass()
pGradFill.ColorRamp = TryCast (pAlgoRamp, IGradientFillSymbol)
pGradFill.IntervalCount = 5

前述のとおり、カラー ランプが直接使われるならば Size プロパティをセットしたり、CreateRamp メソッドを呼ぶ必要はありません。このようなケースでは、親オブジェクトは必要な数の色を生成するために、カラー ランプ オブジェクトに含まれている情報を使います。Size プロパティは無視されます。Name プロパティは文字列を格納でき、作成したカラー ランプを追跡するために使うことができます。 ArcObjects は内部的にその名前を使用することはありません。

参考

メタデータ

種類

製品