C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: Font.Height をミリメートルにしたい


(過去ログ 111 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■65624 / inTopicNo.1)  Font.Height をミリメートルにしたい
  
□投稿者/ ひろ (13回)-(2013/03/12(Tue) 17:36:12)

分類:[C#] 

2013/03/12(Tue) 18:15:29 編集(投稿者)
2013/03/12(Tue) 18:15:25 編集(投稿者)

Font.Height で得られるのは フォントの行間 (ピクセル単位) だということは
判ったのですが。

この値をミリメートルに変換するにはどうしたらよいのでしょうか。



そもそも。
e.Graphics.DrawString(date, FONT, Brushes.Black, xpos, ypos, strFmt);

で、1行描画しているのですが、次の行のY座標を更新するために、

ypos += FONT.Height;

ということをしています。

そこで、FONT.Heightをミリメートルに変換したいです。

引用返信 編集キー/
■65625 / inTopicNo.2)  Re[1]: Font.Height をミリメートルにしたい
□投稿者/ ひろ (14回)-(2013/03/12(Tue) 18:01:51)
ミリメートルにするには、下記計算で出来ることまではわかりました。

ピクセル数÷DPI×25.4

が、プリンタのDPIを取得する方法がわかりません。
どうしたらいいでしょう。
引用返信 編集キー/
■65626 / inTopicNo.3)  Re[2]: Font.Height をミリメートルにしたい
□投稿者/ Hongliang (39回)-(2013/03/12(Tue) 18:20:57)
例えば、PrintPageイベントの、PrintPageEventArgs.Graphicsを使ってFont.GetHeight(Graphics)を使うとか。
PageUnitをMillimeterにすれば初めからミリメートルで計算してくれます。
引用返信 編集キー/
■65627 / inTopicNo.4)  Re[3]: Font.Height をミリメートルにしたい
□投稿者/ ひろ (15回)-(2013/03/12(Tue) 18:49:45)
No65626 (Hongliang さん) に返信
> 例えば、PrintPageイベントの、PrintPageEventArgs.Graphicsを使ってFont.GetHeight(Graphics)を使うとか。
> PageUnitをMillimeterにすれば初めからミリメートルで計算してくれます。


PageUnitをMillimeterに変更せずに、何とかなりませんか?

引用返信 編集キー/
■65628 / inTopicNo.5)  Re[4]: Font.Height をミリメートルにしたい
□投稿者/ Hongliang (40回)-(2013/03/12(Tue) 19:04:52)
Graphics.DpiYで縦方向の解像度(DPI)は取得できるのでそれで計算しても良いですが。
なぜ変更しちゃダメなんでしょう? GetHeightの時だけ変更して、終わったら元に戻せばいい話だと思いますけど。
引用返信 編集キー/
■65629 / inTopicNo.6)  Re[5]: Font.Height をミリメートルにしたい
□投稿者/ ひろ (16回)-(2013/03/12(Tue) 19:26:35)
No65628 (Hongliang さん) に返信
> なぜ変更しちゃダメなんでしょう? GetHeightの時だけ変更して、終わったら元に戻せばいい話だと思いますけど。

なるほど!
この方法でいけそうです。
解決済み
引用返信 編集キー/
■65641 / inTopicNo.7)  Re[6]: Font.Height をミリメートルにしたい
□投稿者/ shu (220回)-(2013/03/13(Wed) 07:54:09)
No65629 (ひろ さん) に返信

解決になっていますが
文字列の幅、高さを求めるなら

Font.Hightだと文字によってうまくいかない場合があります。

MeasureString, MeasureCharacterRangesを使用された方がよいと思います。
http://dobon.net/vb/dotnet/graphics/measurestring.html
http://msdn.microsoft.com/ja-jp/library/dd297679.aspx

PageUnitがmmでないのにmmに拘っている理由がよくわかりません。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -