- - PR -
DrawStringを使用しての印字について質問
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-12-15 10:04
こんにちは、きのぴおです。
VisualStudio2003 C#を使用しています。 DrawStringを使って文字の印刷をしています。 印字位置をミリで考えたいので以下のように試しました。 結果は全然違う位置に印字されました。 左から約125ミリ、上から約185ミリの位置です。 質問 印字位置をミリで指定したいのでどのように変換すればよいのでしょうか? 試したコード private void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { Font font = new Font("MS ゴシック", 12); Brush bs = new SolidBrush(Color.Black); //左から20ミリ 上から30ミリの位置に印字したい //使用プリンタの解像度は600DPI float fx =(20*600/25.4); float fy =(30*600/25.4); e.Graphics.DrawString("テスト文字列",font,bs,fx,fy); e.HasMorePages=false; } C#は只今勉強中でして的外れな質問かもしれませんが よろしくお願いします。 | ||||
|
投稿日時: 2005-12-15 10:16
今日は
Graphics g=e.Graphics; g.PageUnit = GraphicsUnit.Millimeter; で行けませんか [ メッセージ編集済み 編集者: rvmx 編集日時 2005-12-15 10:17 ] | ||||
|
投稿日時: 2005-12-15 11:01
きのぴおです。早速のコメントありがとうございます。
Font font = new Font(CB2.Text, 12); Brush bs = new SolidBrush(Color.Black); Graphics g=e.Graphics; g.PageUnit = GraphicsUnit.Millimeter; e.Graphics.DrawString("テスト文字列",font,bs,100,100);//左から100ミリ 上から100ミリのつもり e.HasMorePages=false; 教えていただいたようにしてみました。 結果は、左上とも約105ミリの位置に印字されました。 絶対位置ではないのでしょうか?なんとなく余白が加味されているように 思います。絶対位置での指定はできないのでしょうかね。 | ||||
|
投稿日時: 2005-12-15 11:28
こんにちは。
まさにそのまま。プリンタの設定で余白を指定しているだけ、だったりして。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2005-12-15 11:29
ドライバ依存ということもあるので、きっちり合わせるのは難しいですね。
私は、ラインプリンタなんかを扱う時は設定ファイルに、+ - の補正をかける項目を設けています。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-12-15 13:00
ここが参考になるかと
http://www.codeproject.com/csharp/DotNetprinterbounds.asp | ||||
|
投稿日時: 2005-12-15 15:11
きのぴおです。
burton999 さんに教えていただいたページにあったコードをそのまま 使ったみました。 私の使用しているプリンタ Canon LBP-930 で印刷すると 左から1インチ上から1インチのところから四角形が印刷されました。 余白が1インチ?うーーん、これはあり得ないです。 プリンタのプロパティを確認しても余白という項目はないのですけど どこで設定してるんだろう? ハード的な印刷可能領域としては上下左右5mmのです。 むずかしいことをしたいんじゃなく、普通に文字が指定通りの位置に 印字できたらいいだけなのになんでこんなにハマるんだろう。 まいったなぁ... じゃんぬねっとさん あ、僕も調整値は設定できるようにしています。これがないと不便なので。 | ||||
|
投稿日時: 2005-12-15 15:50
同じ? http://blogs.wankuma.com/naka/archive/2004/08/24/4331.aspx |
1