Color類 link

Ren’Py有一個Color類,可以用於各色彩空間之間的轉換,或者進行各種調色操作。Color對象不能改變,可以用在任何色彩元組出現的地方。

色彩元組處於下列三種色彩空間之一:

  • RGB - 紅(Red)、綠(Green)、藍(Blue)
  • HLS - 色相(Hue)、亮度(Lightness)、飽和度(Saturation)
  • HSV - 色相(Hue)、飽和度(Saturation)、明度(Value)

下面的例子中,不同的色彩空間的計算方式,表示了同一種亮綠色:

# 標準Ren'Py色彩。
Color("#0f0")
Color("#00ff00")
Color((0, 255, 0, 255))

# 從其他色彩空間轉換
Color(hls=(.333, 0.5, 1.0))
Color(hsv=(.333, 1.0, 1.0))

# 將紅色透過某個方法轉為綠色,並返回一個新的色彩。
Color("#f00").rotate_hue(.333)
class Color(color=None, hls=None, hsv=None, rgb=None, alpha=1.0) link

Color類用於表現和操作色彩以及各個色彩空間之間轉換。它也使用一個alpha值表現透明度。

創建一個Color對象時,至少需要提供一個 colorhlshsvrgb 入參。(如果每一項入參都是None,那麼返回None。)

color

Ren’Py能理解的標準格式色彩之一。標準格式色彩包括:

  • 一個Color對象。
  • 一個(r, g, b)或(r, g, b, a)元組,每一項數值都位於0到255的閉區間。
  • 十六進位制色彩字串,格式為“#rgb”、“#rgba”、“#rrggbb”或“#rrggbbaa”。
hls
HLS色彩空間的某個色彩。這是一個三元元組,每個元素的值位於0.0到1.0的閉區間。
hsv
HSV色彩空間的某個色彩。這是一個三元元組,每個元素的值位於0.0到1.0的閉區間。
rgb
RGB色彩空間的某個色彩。這是一個三元元組,每個元素的值位於0.0到1.0的閉區間。

如果提供的色彩不包含alpha值,就需要使用 alphaalpha 的值必須位於0.0到1.0的閉區間。

Color對象可以當作一個4元元組使用,各個元素分別為紅、綠、藍和alpha。被當作元組使用時,元組內每個元素的值位於0到255的閉區間。

Color對象支持+、-和*操作符,分別表示加法、減法和乘法。 有時候對色彩的這些操作會導致色彩中某個元素的值超過支持的範圍。 這樣的色彩不能被直接傳給Ren’Py的其他部分。 (可以調用normalize方法將元素值限制在合適的範圍內,並返回一個新的色彩。)

hls link

將色彩以HLS色彩空間三元元組形式返回。每個元素的值位於0.0到1.0的閉區間。

hsv link

將色彩以HSV色彩空間三元元組形式返回。每個元素的值位於0.0到1.0的閉區間。

rgb link

將色彩以RGB色彩空間三元元組形式返回。每個元素的值位於0.0到1.0的閉區間。

rgba link

以4元元組形式返回色彩訊息,紅、綠、藍和alpha元素的值都介於0.0和1.0之間。

alpha link

將色彩的alpha(透明度)值返回。alpha的值位於0.0到1.0的閉區間,0.0表示完全透明,1.0表示完全不透明。

hexcode link

返回一個字串,字串為#rrggbbaa或#rrggbb格式的十六進位制顏色代碼。

Color對象有下列方法。由於Color對象本身不能改變,這些方法會返回一個新的Color對象。

interpolate(other, fraction) link

該Color對象和RGB色彩空間中的 other 間的插值(interpolate),將結果返回為一個新的Color對象。如果 fraction 的值是0.0,結果為原Color對象;如果 fraction 的值是1.0,結果與 other 相同。

interpolate_hls(other, fraction) link

該Color對象和HLS色彩空間中的 other 間的插值(interpolate),將結果返回為一個新的Color對象。如果 fraction 的值是0.0,結果為原Color對象;如果 fraction 的值是1.0,結果與 other 相同。

other 可以是一個字串、Color對象或HLS元組。

interpolate_hsv(other, fraction) link

該Color對象和HLV色彩空間中的 other 間的插值(interpolate),將結果返回為一個新的Color對象。如果 fraction 的值是0.0,結果為原Color對象;如果 fraction 的值是1.0,結果與 other 相同。

other 可以是一個字串、Color對象或HSV元組。

multiply_hls_saturation(saturation) link

把該Color對象的飽和度乘以 saturation ,將結果返回為一個新的Color對象。在這HLS色彩空間內完成。

multiply_hsv_saturation(saturation) link

把該Color對象的飽和度乘以 saturation ,將結果返回為一個新的Color對象。在這HSV色彩空間內完成。

multiply_value(value) link

把該Color對象的明度乘以 value ,將結果返回為一個新的Color對象。在這HSV色彩空間內完成。

normalize(self) link

返回了這個Color對象的歸一化版本,所有色彩值都位於0到255的閉合區間。

opacity(opacity) link

把該Color對象的alpha值乘以 opacity ,將結果返回為一個新的Color對象。

replace_hls_saturation(saturation) link

把該Color對象的飽和度替換為 saturation ,將結果返回為一個新的Color對象。在這HLS色彩空間內完成。

replace_hsv_saturation(saturation) link

把該Color對象的飽和度替換為 saturation ,將結果返回為一個新的Color對象。在這HSV色彩空間內完成。

replace_hue(hue) link

把該Color對象的色相替換為位於0.0到1.0閉區間內的 hue ,將結果返回為一個新的Color對象。

replace_lightness(lightness) link

把該Color對象的亮度替換為 lightneww ,將結果返回為一個新的Color對象。在這HLS色彩空間內完成。

replace_opacity(opacity) link

把該Color對象的飽和度替換為 saturation ,將結果返回為一個新的Color對象。

replace_value(value) link

把該Color對象的明度替換為 value ,將結果返回為一個新的Color對象。在這HSV色彩空間內完成。

rotate_hue(rotation) link

使用 rotation 調整該Color對象的色相,將結果返回為一個新的Color對象。 rotation 是色相環旋轉角度。色相環旋轉一週360度。

shade(fraction) link

將該Color對象與黑色混合,創建色彩的低調(shade)。 fraction 是新色彩相對原色彩的比值。如果 fraction 為1.0,色彩不發生變化;如果為0.0,返回黑色。

alpha值不會被這個方法改變。

tint(fraction) link

將該Color對象與白色混合,創建色彩的高調(tint)。fraction 是新色彩相對原色彩的比值。如果 fraction 為1.0,色彩不發生變化;如果為0.0,返回白色。

alpha值不會被這個方法改變。