- - PR -
DataGridを印刷した場合のWidthの誤差について教えて下さい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-15 14:09
現在、DataGrid(正確には DataGridView)を印刷する処理をゴリゴリ書いています。
System.Drawing.Graphics.DrawString() にて、DataGrid.Columns(列位置).Width の幅内に文字列を印刷させてみると、画面と同じように印刷されずに、はみ出てし まいます。 このはみ出し方が一定ではなく、どうやら幅の大きさに比例して、はみ出る文字の 量が増えます。 これは一体どうしてなのでしょうか?
一定量なら、多分幅の取り方(罫線の内側のみとか、罫線含むなど)の違いなの だと推測できるので、その分を常に加算してやれば良いのだと思います。 しかし上記の結果は一定比率分の加算が必要に思えます。 DataGrid の幅 * 1.1 などとしても良いように思うのですが、プリンターによって 1.2 が正しかったりしそうで怖いので、きちんとした理由が知りたいのです。 解像度の問題などでしょうか? | ||||||||
|
投稿日時: 2006-02-15 14:21
確認ですが、Font は固定ピッチフォントでかつ 1.5pt のフォントで Draw していますか? もちろん、DataGrid のフォントと同じフォントでなければなりません。 問題の切り分けとして同様の実装で、フォームのコントロールに対して描画してみてください。 (もちろん同じ Width の Rectanble で) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-02-15 15:14
どちらも Name = "MS ゴシック" Size=9.0 であることは確認しました。 9.0 がいけないのでしょうか?
申し訳ありません。やり方が良くわかりません。 どうやってやるのでしょうか? | ||||||||
|
投稿日時: 2006-02-15 15:39
いえ、ベストな選択でしょう。
ちょっと当方で試しました。 その結果 TextBox で表示された文字列と Form 描画した文字列とではズレが生じました。 どうもコントロールと同じように描画されないみたいですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-02-15 15:44
試していただいたんですね。いつも本当にありがとうございます。 どちらも画面で確認した状態でズレているので解像度云々では無さそうですね。 であれば、実験しながら定数を割り出して乗じることで逃げるのもアリな気がしてきました。 この方向で試してみようと思います。 |
1