色(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:
コメントを投稿