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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.101420 の関連記事表示

<< 0 >>
■101420  印刷時の余白設定について
□投稿者/ こいち -(2023/02/19(Sun) 18:22:06)

    分類:[VB.NET/VB2005 以降] 

    いつもお世話になっております。

    Visual Basic2013 で開発しております。

    自作の印刷ダイアログフォームを作成して、指定したイメージの印刷をしようと思っているのですがどうも
    余白の調整が上手くいきません。

    ちょっと端折るのですが、以下のような感じで印刷設定しています。

    Using PD As New PageSetupDialog()

    (省略)

    PD.EnableMetric = True

    ' 用紙余白設定
    PD.Document.DefaultPageSettings.Margins = New System.Drawing.Printing.Margins(frmPrint.dblPaperMarginLeft, _
      frmPrint.dblPaperMarginRight, _
    frmPrint.dblPaperMarginTop, _
    frmPrint.dblPaperMarginBottom)

    PD.Document.OriginAtMargins = True

    (省略)

    '印刷を開始する
    PD.Document.Print()

    End Using

    frmPrint.dblPaperMarginLeft には、mm単位の小数値が入っております。
    実際に印刷された結果を見ると、指定した数値以上の余白が表示されており、調整に困っております。

    何かやり方が間違っておりますでしょうか。
親記事 /過去ログ177より / 関連記事表示
削除チェック/

■101422  Re[1]: 印刷時の余白設定について
□投稿者/ furu -(2023/02/20(Mon) 09:29:38)
    No101420 (こいち さん) に返信
    > 何かやり方が間違っておりますでしょうか。
    ハードマージン(System.Drawing.PrintingのHardMarginX,HardMarginY)は
    考慮されていますか?

    考慮されていなければ、通常のレーザープリンタで5mm程ずれます。
記事No.101420 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101428  Re[2]: 印刷時の余白設定について
□投稿者/ こいち -(2023/02/20(Mon) 23:42:58)
    2023/02/20(Mon) 23:45:14 編集(投稿者)

    No101422 (furu さん) に返信

    > ハードマージン(System.Drawing.PrintingのHardMarginX,HardMarginY)は
    > 考慮されていますか?
    >
    > 考慮されていなければ、通常のレーザープリンタで5mm程ずれます。

    すみません、遅くなりました。ありがとうございます。
    ハードマージンというのは、インクジェットで印刷した時に微妙に出る余白みたいなやつですよね。
    New System.Drawing.Printing.Margins(0, 0, 0, 0) としても微妙な余白が出るのを確認しておりました。

    ロジックの中では考慮しておりませんでした。
    ちょっと組み込んでみようと思います。
記事No.101420 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101426  Re[1]: 印刷時の余白設定について
□投稿者/ shu -(2023/02/20(Mon) 14:34:15)
    No101420 (こいち さん) に返信

    > frmPrint.dblPaperMarginLeft には、mm単位の小数値が入っております。
    Marginは1/100インチ単位なので
    mmを使用したい場合、25.4で割って100を掛けた値を指定する必要があります。
    後はfuruさんの提示されたHardMarginX,HardMarginYを考慮して
    HardMarginXをleftから引いて
    HardMarginYをtopから引く
    必要があります。
記事No.101420 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101429  Re[2]: 印刷時の余白設定について
□投稿者/ こいち -(2023/02/20(Mon) 23:44:49)
    No101426 (shu さん) に返信

    >>frmPrint.dblPaperMarginLeft には、mm単位の小数値が入っております。
    > Marginは1/100インチ単位なので
    > mmを使用したい場合、25.4で割って100を掛けた値を指定する必要があります。
    > 後はfuruさんの提示されたHardMarginX,HardMarginYを考慮して
    > HardMarginXをleftから引いて
    > HardMarginYをtopから引く
    > 必要があります。

    PD.EnableMetric = True
    これを入れておけば、mm単位で指定できると思っておりました。
    上記の計算式を入れてみて試してみます。ありがとうございます。
    また、明日調査してみます!
記事No.101420 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101431  Re[3]: 印刷時の余白設定について
□投稿者/ こいち -(2023/02/21(Tue) 22:55:48)
    改めてご報告です・・・
    
    やっぱり、印刷された結果がおかしいです。
    
     ' 用紙余白設定
      PD.Document.DefaultPageSettings.Margins = New System.Drawing.Printing.Margins(10, 10, 10, 0)
    
    とした場合、上と左にそれぞれ 20mm(2cm)の余白が出力される結果となりました。
    
    上の指定だと、左10、右10、上10 ですよね?何がいけないのでしょうか・・・
    (ごちゃごちゃするので、端折っているのですが、shuさんから教わったインチ変換の計算は入れております)
記事No.101420 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101432  Re[4]: 印刷時の余白設定について
□投稿者/ shu -(2023/02/22(Wed) 06:56:05)
    No101431 (こいち さん) に返信
    > 改めてご報告です・・・
    >
    > やっぱり、印刷された結果がおかしいです。
    >
    > ' 用紙余白設定
    > PD.Document.DefaultPageSettings.Margins = New System.Drawing.Printing.Margins(10, 10, 10, 0)
    >
    > とした場合、上と左にそれぞれ 20mm(2cm)の余白が出力される結果となりました。
    >
    > 上の指定だと、左10、右10、上10 ですよね?何がいけないのでしょうか・・・
    > (ごちゃごちゃするので、端折っているのですが、shuさんから教わったインチ変換の計算は入れております)

    この指定では
    左:(HardMarginX + 10) / 100 * 25.4 mm
    上:(HardMarginY + 10) / 100 * 25.4 mm
    となると思います。
    誤差はあるかもしれないので
    0,0,0,0
    での余白を確認し調整するのがよいと思います。


記事No.101420 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101434  Re[5]: 印刷時の余白設定について
□投稿者/ こいち -(2023/02/23(Thu) 23:13:44)
    No101432 (shu さん) に返信
    > この指定では
    > 左:(HardMarginX + 10) / 100 * 25.4 mm
    > 上:(HardMarginY + 10) / 100 * 25.4 mm
    > となると思います。
    > 誤差はあるかもしれないので
    > 0,0,0,0
    > での余白を確認し調整するのがよいと思います。

    遅くなりました。ありがとうございます。
    HardMarginX、HardMarginY ともデバッグで確認したら、0が返ってきておりました。

    どうも動かしていて気付いたんですが、上と下の余白が足されて上に、左と右が足されて左に余白が出てるようです。
    上と左を 0 とし、下と右を 10 として印刷したら 下と右に余白が出てきました。。。
    これはどういうことでしょうか・・・
    ますます分からなくなってしまいました。
記事No.101420 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101435  Re[6]: 印刷時の余白設定について
□投稿者/ shu -(2023/02/24(Fri) 08:41:03)
    No101434 (こいち さん) に返信

    余白を視認する為に行っている描画処理はどのように行われていますでしょうか?
記事No.101420 のレス /過去ログ177より / 関連記事表示
削除チェック/

■101472  Re[7]: 印刷時の余白設定について
□投稿者/ こいち -(2023/02/28(Tue) 21:56:31)
    No101435 (shu さん) に返信
    
    > 余白を視認する為に行っている描画処理はどのように行われていますでしょうか?
    
    すみません、遅くなりました。描画は以下のようにやっておりました。
    
        Private Sub pd_PrintPage(ByVal sender As Object, _
                ByVal e As System.Drawing.Printing.PrintPageEventArgs)
    
            Dim img As Image
    
         -----省略----
    
                    '画像を描画する
                    e.Graphics.DrawImage(img, e.MarginBounds)
    
         -----省略----
    
        End Sub
    
        「画像を描画する」を以下のように修正したら期待する印刷結果になりました。
         e.Graphics.DrawImage(img, 0, 0, e.MarginBounds.Width, e.MarginBounds.Height)
    
    
      ありがとうございました!
      
記事No.101420 のレス / END /過去ログ177より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -