色(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);
}




