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

わんくま同盟

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

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


■83341 / )  Re[4]: PrintPreviewControl の表示
□投稿者/ 夜叉丸 (50回)-(2017/03/17(Fri) 13:39:38)
2017/03/17(Fri) 14:01:00 編集(投稿者)
2017/03/17(Fri) 14:00:06 編集(投稿者)
2017/03/17(Fri) 13:59:20 編集(投稿者)
2017/03/17(Fri) 13:58:20 編集(投稿者)
2017/03/17(Fri) 13:41:39 編集(投稿者)

e.Graphics.PageUnit = GraphicsUnit.Inch;
を指定しています。

ハードマージンの値は
this.DefaultPageSettings.HardMarginX = 9;
this.DefaultPageSettings.HardMarginY = 0;
です。

int iw = pdoc.DefaultPageSettings.PaperSize.Width - pdoc.DefaultPageSettings.Margins.Left - pdoc.DefaultPageSettings.Margins.Right;
int ih = pdoc.DefaultPageSettings.PaperSize.Height - pdoc.DefaultPageSettings.Margins.Top - pdoc.DefaultPageSettings.Margins.Bottom;

float xpos = (float)pdoc.DefaultPageSettings.Margins.Left * 58f / (float)pdoc.DefaultPageSettings.PaperSize.Width;
float ypos = (float)pdoc.DefaultPageSettings.Margins.Top * 297f / (float)pdoc.DefaultPageSettings.PaperSize.Height;
float wlen = (float)iw * 58f / (float)pdoc.DefaultPageSettings.PaperSize.Width;
float hlen = (float)ih * 297f / (float)pdoc.DefaultPageSettings.PaperSize.Height;

あとは、指定時にミリで指定したかったので位置情報は以下で求めました。
(float)milli / 25.4f

で、試行錯誤の結果
印字するときの位置をいかにしてみました。
いい札物を見たところ、見た目これでいけてるみたいなんですけど。

横位置 (float)milli / 25.4f - ((this.PrintController.IsPreview) ? 0.0f : this.DefaultPageSettings.HardMarginX * 0.01f)
縦位置 (float)milli / 25.4f - ((this.PrintController.IsPreview) ? 0.0f : this.DefaultPageSettings.HardMarginY * 0.01f);

これでいいのでしょうか?

あと、問題なのは
求めた高さが140mm なので
PaperSize("特殊", 228, 140f / 297f * 1169f);
としたのですが、プレビュー画面の下側に余白が余っています。


 本来(理想)      現状
のプレビュー      のプレビュー
┌───┐       ┌───┐
│┌─┐│       │┌─┐│
│└─┘│       │└─┘│
└───┘       │     │←下側に隙間が多い
                └───┘


印刷結果
┌───┐
│     │←送り出し部分なので仕方がない?
│┌─┐│
│└─┘│
└───┘
     





返信 編集キー/


管理者用

- Child Tree -