[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
白茶さんそんな感じです
Hの部分iとstpに置き換えて使用します
ありがとうございます
(24bit) 2021/08/03(火) 10:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.