Colorを明るめ、暗めにパーセント単位で変換する
Total: 45
, Today: 1
, Yesterday: 6
Posted by aterai at
Last-modified:
Summary
JColorChooser
で選択したColor
を指定したパーセントで明るめたり、暗めてカラーパレットを生成します。
Screenshot

Advertisement
Source Code Examples
public static Color getTintColor(Color color, float tint) {
Color c;
boolean positive = tint > 0f;
if (positive) {
int v = (int) (tint * 255f + .5f);
float t = 1f - tint;
int r = (int) (color.getRed() * t) + v;
int g = (int) (color.getGreen() * t) + v;
int b = (int) (color.getBlue() * t) + v;
c = new Color(r, g, b);
} else {
c = getShadeColor(color, 1f + tint);
}
return c;
}
public static Color getShadeColor(Color color, float shade) {
float r = color.getRed() * shade;
float g = color.getGreen() * shade;
float b = color.getBlue() * shade;
return new Color((int) r, (int) g, (int) b);
}
View in GitHub: Java, KotlinExplanation
- Color#brighter()やColor#darker()を使用すると
private static final double FACTOR = 0.7;
固定で明暗を変更する - このサンプルでは
JColorChooser
で選択したColor
を以下のパーセント単位で明暗を変更するテストが実行可能Word
などのテーマカラーをLighter 80%
した色とは微妙に誤差?がでて完全には一致しないrgb
からhsl
に変換してlumMod
、lumOff
を適用すればWord
の変換と完全に一致する→ サンプルを追加してテスト中だが、一致しない場合もある → デバッグ中
shade(..., 1f, "")
- 変換元の色
shade(..., .95f, "Darker 5%")
Shade
陰影を5%
暗くした色を生成
shade(..., .85f, "Darker 15%")
Shade
陰影を15%
暗くした色を生成
shade(..., .75f, "Darker 25%")
Shade
陰影を25%
暗くした色を生成
shade(..., .65f, "Darker 35%")
Shade
陰影を35%
暗くした色を生成
shade(..., .5f, "Darker 50%")
Shade
陰影を50%
暗くした色を生成
- tint(..., 0f, "");
- 変換元の色
tint(..., .8f, "Lighter 80%")
Tint
色合いを80%
明るくした色を生成
tint(..., .6f, "Lighter 60%")
Tint
色合いを60%
明るくした色を生成
tint(..., .4f, "Lighter 40%")
Tint
色合いを40%
明るくした色を生成
tint(..., -.25f, "Darker 25%")
Tint
色合いを-25%
明るくした色を生成Shade
陰影を25%
暗くして生成した色と同じ
tint(..., -.5f, "Darker 50%")
Tint
色合いを-50%
明るくした色を生成Shade
陰影を50%
暗くして生成した色と同じ