午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

Pixtack紫陽花2.7.73.154_0.5ピクセル、影付き文字の描画

昨日
 
 
文字の描画試験中
影をつけることができるようにした
設定は色1、色2、透明度、影の縦横位置、グラデーションの有無、角度
 

f:id:gogowaten:20191017135926p:plain

影の設定
色1が影の色の基本になる
色2はグラデーションのとき
色の右側の数値は透明度、0が透明、最大値255で不透明
横、縦は影の描画位置、表示の1/10pixelになる
 
イメージ 2
下が黒の影付き、影に位置は横、縦ともに10
 
影の位置の変化
イメージ 3
上が横、縦共に5
下が横-14、縦25
 
イメージ 4
指定できる範囲は-100から100の上下左右10pixel
フォントによっては影が描画範囲を超えてしまう
 
影のグラデーション
イメージ 5
文字が白、影の色1が赤、色2が青、影の位置の横縦ともに10
 
 
イメージ 6
背景、枠との併用もできる
 
影といっても処理は文字の描画をしているだけなので
文字の描画ボタンの時とほとんど同じ、縦横をずらして描画
変えたところはズレの指定で、以前はフォントサイズの1/10pixelか1ピクセルぶんを
右下にずらすのを固定だった
今回は上下左右に0.1pixel刻みで最大10ピクセル指定できるようにした
0.1pixelって表現がおかしいけど、アンチエイリアスを使っていると
0.5pixelと1ピクセルの違いが出る
 

f:id:gogowaten:20191017135951p:plain

0.5ピクセルって表現がおかしいだけで意味はあった
文字の描画に使っているDrawString
g.DrawString(str, myFont, b, rectF, sFormat)
Graphics.DrawString(文字列、フォント、ブラシ、座標と範囲、文字の書式)
これに渡す引数の座標と範囲のRectangleF、この座標指定に0.5とかの小数点を指定すると、しっかり反映されているものが描画される
以前は0.5ピクセルなんて存在しないから意味が無いと思っていたけど意味があった
半透明を使って1以下のピクセルを表現しているみたいなので
アンチエイリアスを使わない描画の時は意味がなさそう
 
 
 
 
ダウンロード
 
ヤフーボックス
 
 
次回は翌日