0

System.Drawing.ColoraとaSystem.Windows.Media.Colorが同じ色を表すかどうかをテストする方法は?

私は試した

colour1 == colour2

しかし、エラーが発生します

演算子「==」は、「System.Drawing.Color」および「System.Windows.Media.Color」タイプのオペランドには適用できません。

4

3 に答える 3

2

2つのオプションがあります:

  1. ここで説明するタイプから別のタイプに変換してから、「==」演算子を使用します。

  2. 個々のコンポーネントを比較します。それらの両方がバイトとしてR、G、B、Aプロパティを持っているので、あなたは簡単に行うことができます:

    bool ColorsEqual (System.Drawing.Color c1, System.Windows.Media.Color c2)
    {
        return c1.R == c2.R && c1.G == c2.G 
            && c1.B == c2.B && c1.A == c2.A;
    }
    
于 2013-02-25T10:39:13.440 に答える
0

これらの2つのタイプにはオーバーロードがないoperator==ため、色の文字列値またはARGB値を取得できます。

System.Drawing.Color c1 = System.Drawing.Color.FromArgb(255,0,0,0);
System.Windows.Media.Color c2 = System.Windows.Media.Color(255,0,0,0);
if(c1.A == c2.A && c1.R == c2.R && ...

ここここを見てください。

于 2013-02-25T10:38:48.657 に答える
0

System.Windows.Media.Color に変換する System.Drawing.Color への拡張メソッドを作成し、System.Windows.Media.Color 型で比較できます。

public static System.Windows.Media.Color ToMediaColor(this System.Drawing.Color color)
{
    return System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B);
}
于 2013-02-25T10:40:46.870 に答える