- CharToString
- CharArrayToString
- CharArrayToStruct
- StructToCharArray
- ColorToARGB
- ColorToPRGB
- ColorToString
- DoubleToString
- EnumToString
- IntegerToString
- ShortToString
- ShortArrayToString
- TimeToString
- NormalizeDouble
- StringToCharArray
- StringToColor
- StringToDouble
- StringToInteger
- StringToShortArray
- StringToTime
- StringFormat
ColorToPRGB
color型をuintに変換して、色の前乗算ARGB表現(PRGB)を取得します。PRGBカラーフォーマットは、グラフィックリソースの作成時、 テキスト出力で使用され、CCanvas標準ライブラリクラスのカラーフォーマットCOLOR_FORMAT_ARGB_RAW(コンポーネントはターミナルで処理されず、ユーザーが正しく準備する必要があります)で使用されます。
uint ColorToPRGB(
|
パラメータ
clr
[in] color型の変数に格納されている値
alpha
[in] アルファチャンネルの値、カラーフォーマットARGBで色を取得するための値。0(重ねられたピクセルの色が下のピクセルの表示に全く影響しない)から255(色が完全に重なり、下のピクセルの色を覆う)までで設定されます。色の透明度(パーセンテージ)は「(1 - alpha/255) × 100%」で計算されます。つまりアルファチャンネルの値が小さいほど色は透明になります。
戻り値
ARGBフォーマットでの色表現。uint型の4バイトにアルファ、赤、緑、青(アルファチャンネル、赤、緑、青)の値が格納されます。
注意事項
PRGBはARGBとどう違うか?
アルファチャンネル付きのRGBAカラーには、一般的に2つの表現方法があります。
- 直線(通常)ARGB – RGB は「そのまま」格納され、アルファは別扱い
- 前乗算(PRGB)– RGB はすでにアルファ値で乗算されている
モードCOLOR_FORMAT_ARGB_RAWは、色の各コンポーネントがすでに正しく準備されており、ターミナルが「正規化/再計算」しないことを前提としています。したがって、前乗算カラーが期待される場合はPRGBを渡す必要があります。そうしないと描画中に視覚的なアーティファクトや不一致が発生する可能性があります。
PRGB色は次の式で計算されます。
R = R * A / 255
G = G * A / 255
B = B * A / 255
A = A
特別なケース:
- アルファ = 255の場合、結果はColorToARGB(clr,255)と一致します(乗算してもRGBは変わらない)
- アルファ = 0の場合、結果は0x00000000となります(完全に透明なピクセル、RGB = 0)
例:
//+------------------------------------------------------------------+
|
参照
Resources、ColorToARGB、ResourceCreate()、TextOut()、Color型、char、short、int、long型