[[20210803083914]] 『RGBカラーパレットの作成』(24bit) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『RGBカラーパレットの作成』(24bit)

色(255*255*255色)をn等分して指定のインデックスiにあるカラーコードの作成を返してくれる関数を作成したいと思っています

しかし単純に255*255*255/n*(i-1)では似たような色が交互に現れるだけで
きれいな色相が作れません

この場合どんな感じで作成すればよいんでしょうか?

< 使用 Excel:Office365、使用 OS:Windows10 >


きれいな色相とはなんですか。

(色々わかりません) 2021/08/03(火) 09:30


 HSVで指定して、RGBに変換するのがおすすめです。
https://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9%BA%E9%96%93
(´・ω・`) 2021/08/03(火) 09:38

 こんな感じかな?

    Sub Test()
        Const Stp As Long = 24&
        Dim i As Long
        For i = 1 To Stp
            Cells(i, 1).Value = HSV2RGB((i - 1) * 360& / Stp, 1, 1)
            Cells(i, 1).Interior.Color = Cells(i, 1).Value
        Next
    End Sub
    Function HSV2RGB(ByVal H As Single, s As Single, v As Single) As Long
    Rem HSV値からRGB値を算出 (H は360度、SとVは0以上1以下の数値を指定)
        Dim vMax As Long, vMin As Long, vRGB(0 To 2) As Long
        vMax = v * &HFF&
        vMin = vMax - s * vMax
        H = H - 360& * Int(H / 360&)
        Select Case H
            Case Is <= 60!
                vRGB(0) = vMax
                vRGB(1) = (H / 60!) * (vMax - vMin) + vMin
                vRGB(2) = vMin
            Case Is <= 120!
                vRGB(0) = ((120! - H) / 60!) * (vMax - vMin) + vMin
                vRGB(1) = vMax
                vRGB(2) = vMin
            Case Is <= 180!
                vRGB(0) = vMin
                vRGB(1) = vMax
                vRGB(2) = ((H - 120!) / 60!) * (vMax - vMin) + vMin
            Case Is <= 240!
                vRGB(0) = vMin
                vRGB(1) = ((240! - H) / 60!) * (vMax - vMin) + vMin
                vRGB(2) = vMax
            Case Is <= 300!
                vRGB(0) = ((H - 240!) / 60!) * (vMax - vMin) + vMin
                vRGB(1) = vMin
                vRGB(2) = vMax
            Case Is > 300!
                vRGB(0) = vMax
                vRGB(1) = vMin
                vRGB(2) = ((360! - H) / 60!) * (vMax - vMin) + vMin
        End Select
        HSV2RGB = vRGB(0) + vRGB(1) * &H100& + vRGB(2) * &H10000
    End Function

(白茶) 2021/08/03(火) 10:12


きれいな色相イメージ
https://ja.wikipedia.org/wiki/%E8%89%B2%E7%9B%B8

白茶さんそんな感じです
Hの部分iとstpに置き換えて使用します
ありがとうございます
(24bit) 2021/08/03(火) 10:31


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.