4

画像から pixelcolors を取得するループがあり、パラメーターとしてメソッドに渡した Color と同じかどうかを確認しようとしています。

方法を試しましたEqualsがうまくいきません。方法も試しましたToKnown。2 つの色を合成する値が一致しないため、この一致は機能しないようです。

例:

GetPixel の場合:

{Name=ff000000, ARGB=(255, 0, 0, 0)}

カラー.ブラック:

{Name=Black, ARGB=(255, 0, 0, 0)}
if (pixelColor.ToArgb().Equals(startingOffsetColor.ToArgb())) { }

上記のコードは機能しますが、ループ ステートメント内でこれを使用しているため、より良い方法または CPU オーバーヘッドを削減できる方法があるかどうかを知りたいです。

4

1 に答える 1

17

MSDNによると、Color.Equality演算子...

...カラー構造のARGB値よりも多くを比較します。また、いくつかの状態フラグの比較も行います。2つのカラー構造のARGB値だけを比較する場合は、ToArgbメソッドを使用してそれらを比較します。

したがって、使用している方法は、生の値を比較するために正しいです

編集

.ToArgb()を返すintので==、比較に使用.Equals()できます。冗長すぎる場合は、使用する必要はありません。

于 2011-09-18T23:07:22.503 に答える