午後わてんのブログ

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

Pixtack紫陽花2.7.78.162_横書きの時だけ行間を調整できるようにした

昨日の続き
 
 
文字の描画で行間を調整できるようにした、横書きの時だけ
 
イメージ 5
赤枠の行間の数値で行間の調整
0が調節なしの今までどおり普通の行間になる
調節幅は-100から100まで1刻み
単位はピクセル
 
描画例
イメージ 1
数値を大きくすると行間が開いて、マイナス指定すると縮まる
マイナス値がフォントの大きさを超えると
下から上へ描画したようになる、-100の例がそれ
 
 
イメージ 2
改行を含む複数行文字列の描画はできたので今度は
フォントによって行間にかなりの差があるのを見て調節してみたくなった
 
 
イメージ 3
1行ごとに描画できあがった画像を位置を調節して並べている
 
行間を調節するには改行を含む文字列をそのまま描画するのではなく
1行毎に描画したものを重ねあわせて表現することに

f:id:gogowaten:20191017142039p:plain

メイリオ、フォントサイズ30の時
1行の時の縦ピクセル
SizeF = Graphics.MeasureString("複数行文字列用", Font, New PointF(0, 0), StringFormat)
で、だいたい65ピクセル
 
2行目以降は65ではなくFont.Heightの60が加算されるので
2行だと縦ピクセル数は65+60=125になる
3行なら65+60+60=185
これが調節なしの最終的な画像の縦の大きさになる
SizeF = Graphics.MeasureString("複数行文字列用" & vbNewLine & "2行目", Font, New PointF(0, 0), StringFormat)
 
画像の縦の大きさ=1行の時の縦+((Font.Height+指定値)*行数ー1)
メイリオフォントサイズ30で
3行のときで
指定値が-10なら
最終的な画像の縦の大きさは
65+*1*(3-1))
65+*2
65+*3
65+(100)
165
になる
この大きさでBitmapを作って、そこに1行毎にできあがった画像を描画していく
 
 
複数行文字列の描画ならではの新しい機能を加える事ができて満足
近いところだと縦書での行間調節と書式適用ボタンでも行間調節
文字間の調節もできるようにしたい
 
ダウンロード
ヤフーボックス

*1:60+(-10

*2:60-10)*(3-1

*3:50)*(2