« RGB関数を使ってセルの塗りつぶしの色を指定したとき実際に表示される色 | トップページ | 任意の色とその補色 »

2010年2月25日 (木)

色を反転する

パソコンソフトのイラストレーターには
「反転」という機能が付いています。
Vba20100225a

上の画像の色を「反転」させるとこうなります。
Vba20100225b

もう2つほど例を挙げます。

Vba20100225c

左が反転前、右が反転後です。
Vba20100225d

これらを見てみると
反転前と後のRGBをそれぞれ足したものは
255になっています。

つまり、色を「反転」するとはどういう機能かというと、
RGB表記で

R = 34
G = 230
B = 76

という色を、

R = 255 - 34 = 221
G = 255 - 230 = 25
B = 255 - 76 = 179

という色にすることです。
RGBそれぞれの値の最大値255から
任意の色のRGBをそれぞれ引いたものが
反転した色ということになります。

任意の色とその反転した色をみるコード:

Sub macro100225a()
'色を反転する
    Sheets.Add
    Dim i, r, g, b As Integer
    r = 93
    g = 200
    b = 202
    For i = 0 To 30
        ActiveSheet.Shapes.AddShape(msoShapeRectangle, 8 * i + 4, 10, 4, 200).Select
        Selection.ShapeRange.Fill.ForeColor.RGB = RGB(r, g, b)
        Selection.ShapeRange.Line.Visible = msoFalse
        ActiveSheet.Shapes.AddShape(msoShapeRectangle, 8 * i + 8, 10, 4, 200).Select
        Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255 - r, 255 - g, 255 - b)
        Selection.ShapeRange.Line.Visible = msoFalse
    Next i
End Sub

実行後
Vba20100225e

次に、任意の色とその反転した色のグラデーションに
カラーパレットを変更します。

任意の色とその反転した色のカラーパレット:

Sub macro100225b()
'カラーパレットを変更
'任意の色からその反転した白までの
'グラデーションカラーパレット

    '任意の色の設定
    Dim r0, g0, b0, r1, g1, b1 As Integer
    r0 = 213
    g0 = 34
    b0 = 65
    '反転した色
    r1 = 255 - r0
    g1 = 255 - g0
    b1 = 255 - b0
   
    Dim i, r, g, b As Integer
    Dim MyIndex As Variant
    MyIndex = Array(1, 53, 52, 51, 49, 11, 55, 56, _
        9, 46, 12, 10, 14, 5, 47, 16, _
        3, 45, 43, 50, 42, 41, 13, 48, _
        7, 44, 6, 4, 8, 33, 54, 15, _
        38, 40, 36, 35, 34, 37, 39, 2)

    For i = 0 To 39
        r = r0 + Int((r1 - r0) * i / 39)
        g = g0 + Int((g1 - g0) * i / 39)
        b = b0 + Int((b1 - b0) * i / 39)
        ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
        Debug.Print r & "," & g & "," & b
    Next i
End Sub

実行後の任意の色とその反転した色のカラーパレットです。
Vba20100225f

本当は、「補色」のほうをやりたかったのですが、
「反転」の方が簡単だったので
こっちにしちゃいました。

|

« RGB関数を使ってセルの塗りつぶしの色を指定したとき実際に表示される色 | トップページ | 任意の色とその補色 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 色を反転する:

« RGB関数を使ってセルの塗りつぶしの色を指定したとき実際に表示される色 | トップページ | 任意の色とその補色 »