色を反転させる Xor Color - C#

色(Color)を反転させるメソッドがないので自分で作ってみました。

二つできたので一応処理速度も比較してみましたが、違いはないのでお好みで。
必要ならAlpha値も追加すべきですが、Alpha値は反転させる対象にしない方が無難ですね。

ちなみに「0xff」は255、「0xffffff」は16777215でも何の問題もない。

Sample1

Color XorColor1(Color color)
{
    return Color.FromArgb(
        color.R ^ 0xff,
        color.G ^ 0xff,
        color.B ^ 0xff);
}

Sample2

Color XorColor2(Color color)
{
    return Color.FromArgb(
        (byte)~color.R,
        (byte)~color.G,
        (byte)~color.B);
}


他にも絶対値を返すMath.absを使用して
Color XorColor3(Color color)
{
Color.FromArgb(
        Math.Abs(color.R - 0xff),
        Math.Abs(color.G - 0xff),
        Math.Abs(color.B - 0xff));
}
このように書いてみたが、あまりスマートに感じられなかったので個人的な感覚で却下。
一応これでも可能です。


シンプルな形で。

Sample4

Color XorColor4(Color color)
{
    return Color.FromArgb(
        0xff - color.R,
        0xff - color.G,
        0xff - color.B);
}


Sample5

Color XorColor5(Color color)
{
    return Color.FromArgb(color.ToArgb() ^ 0xffffff);
}

0 Comments:

Sony Style(ソニースタイル)
デル株式会社

Recent Posts