言葉足らずですまん。
>>48
ParentColorに違和感を感じるのは、コレっていかにも親のColorを取ってくる関数ぽくね?ってこと。
if (ParentColor) { ... }
とか書いてあったら「RGBが非ゼロだったら... 」と読みそう。というか絶対そう思うよね

>>47
実際に適用する色を
OutputColor = (ParentColor && Parent!=NULL) ? Parent.Color : Color
みたいに取得できるならいいけど、親がさらにその親の色を継承ってこともあるから、実際には再帰処理なりwhileで回すなりして、
ParentColorが偽になるまで親をたどっていかないといけないから、メソッド化しないと面倒じゃないかなと。