|
|
●解説 垂直に立っているものの影が地面に差しているかのような効果(いわゆる、ドロップダウンシャドウ)を文字列で実現する。
●原理 陰になる部分は、文字列をマトリックスのShare メソッドで変形させて描画する。 ●方法 陰の方向と長さを決め、それに従って文字列をShareする。文字本体は通常に描く。 ○文字のShare 文字のShareは、横方向であれば、X軸を基準にYに比例してX座標値を変化させるものなので、方向や基準線を座標変換で制御しなければならない。
図左はShareの原理を示す。図右の赤の平行四辺形が実際に出力したい傾斜結果であるとする。傾斜の前に、座標変換で、図右の青点を原点にするようなワールド変換を行う。また、この例では、実は傾斜係数は負になる。なぜなら、Yが増加するとXは減少するからである。 新しい原点のデバイス座標(青点)が、Xp、Ypだとすれば、 gを対象のGraphicsとして、 傾斜係数を-2とすれば、 Dim mx
As New Matrix() では、 X’ = X + (-2)×Y、Y’ = Y の演算が行われる。 ○影の処理 影は、Share とともにY軸スケールの調整も必要となる。下図のような影では影は反転文字となる。この場合は、Y軸スケールを負にする。 上図において、Hは文字の高さ、nHは影の高さ(長さ)、nWをX方向の最大の変移とすれば、X軸のShare係数は、nW/H となる。Y軸のスケールは、nH/H となる。図の場合、nHは負とする。影の頭が、文字の下線よりも上であれば正となる。 ●実例 Xc、Yc は描画領域の中心 fmt.Alignment = StringAlignment.Center |