« 種々のカラーパレット 4 | トップページ | RGB関数を使ってセルの塗りつぶしの色を指定したとき実際に表示される色 »

2010年2月23日 (火)

種々のカラーパレット 5

記事「種々のカラーパレット 4」のつづき

種々のカラーパレット 4」では、
色相のグラデーションを
均等に淡くしたり暗くしたカラーパレットに変更する
プロシージャを書きました。
次は、Red、Green、Blueについて個別に
淡くしたり暗くしたりできるようにします。

上記記事中のコードでは、
v_maxをr、g、bそれぞれに使いました。
ここをr、g、bそれぞれで別の値を使うために
rv_max、gv_max、bv_maxという3つの変数にします。

もちろん、tornのところも
rtorn、gtorn、btornの3つの変数にします。

+偏向色相のグラデーションカラーパレットにするコード:

Sub macro100223a()
'カラーパレットを変更
'色相のグラデーション
'偏向トーン変化あり(rtorn, gtorn, btorn > 0)

    Dim i, r, g, b As Integer
    Dim rtorn, gtorn, btorn As Integer
    Dim rv_max, gv_max, bv_max 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)
    'トーンの設定
    rtorn = 180
    gtorn = 0
    btorn = 0
    rv_max = 255 - rtorn
    gv_max = 255 - gtorn
    bv_max = 255 - btorn
        For i = 0 To 6
            r = rv_max + rtorn
            g = Int(gv_max * i / 6) + gtorn
            b = 0 + btorn
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 7 To 13
            r = Int(rv_max - (rv_max * (i - 6) / 7)) + rtorn
            g = gv_max + gtorn
            b = 0 + btorn
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 14 To 20
            r = 0 + rtorn
            g = gv_max + gtorn
            b = Int(bv_max * (i - 13) / 7) + btorn
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 21 To 27
            r = 0 + rtorn
            g = Int(gv_max - (gv_max * (i - 20) / 7)) + gtorn
            b = bv_max + btorn
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 28 To 34
            r = Int(rv_max * (i - 27) / 7) + rtorn
            g = 0 + gtorn
            b = bv_max + btorn
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 35 To 39
            r = rv_max + rtorn
            g = 0 + gtorn
            b = Int(bv_max - (bv_max * (i - 33) / 7)) + btorn
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i

End Sub

変更後の+偏向色相のグラデーションカラーパレットです。
比較用に、右に偏向なしの色相のパレットを載せます。
Pic20100223b Pic20100223a

rtorn = 180ということは、
RGB関数の引数Redが最低でも180はあるということです。

偏向のない色相では、
緑からシアン、青への変化のときは引数Redは0なので
rtorn = 180にすると、引数Redは180になり、
このあたりのグラデーションが特に目立って変化します。

緑からシアン、青への変化はRGB関数で表します。
上が偏向なし、下が偏向あり。

RGB(0, 255, 0) → RGB(0, 255, 255) → RGB(0, 0, 255)
RGB(180, 255, 0) → RGB(180, 255, 255) → RGB(180, 0, 255)

次は、
-偏向色相のグラデーションカラーパレットにするコードです。

-偏向色相のグラデーションカラーパレットにするコード:

Sub macro100223b()
'カラーパレットを変更
'色相のグラデーション
'偏向トーン変化あり(rtorn, gtorn, btorn < 0)

    Dim i, r, g, b As Integer
    Dim rtorn, gtorn, btorn As Integer
    Dim rv_max, gv_max, bv_max 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)
    'トーンの設定
    rtorn = 0
    gtorn = -90
    btorn = 0
    rv_max = 255 + rtorn
    gv_max = 255 + gtorn
    bv_max = 255 + btorn
        For i = 0 To 6
            r = rv_max
            g = Int(gv_max * i / 6)
            b = 0
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 7 To 13
            r = Int(rv_max - (rv_max * (i - 6) / 7))
            g = gv_max
            b = 0
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 14 To 20
            r = 0
            g = gv_max
            b = Int(bv_max * (i - 13) / 7)
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 21 To 27
            r = 0
            g = Int(gv_max - (gv_max * (i - 20) / 7))
            b = bv_max
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 28 To 34
            r = Int(rv_max * (i - 27) / 7)
            g = 0
            b = bv_max
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i
        For i = 35 To 39
            r = rv_max
            g = 0
            b = Int(bv_max - (bv_max * (i - 33) / 7))
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, g, b)
            Debug.Print r & "," & g & "," & b
        Next i

End Sub

変更後の-偏向色相のグラデーションカラーパレットです。
 Pic20100223c Pic20100223a

gtorn = -90ということは、
RGB関数の引数Greenが最高でも255 - 90 = 165ということです。
上の画像を見てみると、
引数Greenが関わるイエロー、緑、シアンと変化していくところが
暗い色になっています。

|

« 種々のカラーパレット 4 | トップページ | RGB関数を使ってセルの塗りつぶしの色を指定したとき実際に表示される色 »

コメント

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

トラックバック


この記事へのトラックバック一覧です: 種々のカラーパレット 5:

« 種々のカラーパレット 4 | トップページ | RGB関数を使ってセルの塗りつぶしの色を指定したとき実際に表示される色 »