C#のためのプリントのトピック

毎日水を先頭に、最後のブログの下に見えた、と8日の年、ちぇ、贅沢。

最近の仕事は非常に満足し、私は、方向、その後の機械学習がしたい最初の会社は現在、問題を解決するために前に蓄積することがあります。

人生についての話は終わった、またはメイントピックいます。(私はこのタイトルはああ人々を引き付けることができない感じ)

 

 

印刷:のPrintDocument

環境:WPFとWinフォーム

要件:組版と印刷の写真

パラメータの前に多くの問題を理解し、今でクリアしたい、容易にそれを記録しませんでした。

WPFは、一時的に同じイベントのBaiduの悪い通りで、Winフォーム前に解決するために、脇に置く印刷に描画PrintPageグラフィックスです。参照の他の一部

https://www.cnblogs.com/hsiang/p/6921817.html

第1のグラフィックは、私は理解していなかった描画では、指定されたサイズに印刷する方法を、紙の大きさでどのくらい、描画する方法です。

// の紙のサイズは、ファイルの先頭に印刷することができます参照して、用紙サイズについてお話しましょう
  PrintDocument.Print(); 
そして、選択したプリンタの後、イベントPrintPageに印刷するデータを描画
プライベート ボイド pdControl_PrintPage(オブジェクト送信者、PrintPageEventArgs E)
{ 
    VAR用のPrintDocument =(のPrintDocument)センダ。
    //纸张的高和宽
    VAR paper_h = printDocument.DefaultPageSettings.PaperSize.Height。
    VAR paper_w = printDocument.DefaultPageSettings.PaperSize.Width。
}

しかし、知っているが、最終的にはピクセル単位またはインチ単位、ああ、この高さと幅の高さと幅を知っているか、他にはどのような地獄はありません。

注を参照するには、新たなPaperSizeとの例では:

100分の1インチ

 まず、このような問題が解決され、用紙サイズがprintDocument.DefaultPageSettings.PaperSizeであり、単位はインチの百です。

しかし、例えば、私は絵が6インチ(特に量)で印刷したいのですが、サイズの幅とより0.15In、はるかに高い0.13Inを与え、これを過ぎることを確認していません。とにかく勝つ0.002以下大丈夫によって異なりますPDF印刷A4の紙が付属しています。なぜこれがエラーを説明するために神でなければなりません。

 

そして、2番目の質問(第3):どのように指定されたサイズを印刷するために描画します

今、私たちは紙を超えて印刷を描く避けるために、それの範囲を知っています。その後、我々は、彼らが絵について話す場合、コンテンツ、そして何を描き、他のほとんどだろう。

私は何をする画像のサイズに基づいており、全体の紙をカバーしました。 

   // のクラスを作ろう、と用紙サイズに画像サイズを記録するために
//このクラス唯一の測定単位を変換デバッグ促進することで、実用的なアプリケーションは、ラインの単位選択 クラスPrintUnit {
     絵が実際にインチで、画像の//サイズを、写真の
公共の int型 unit_w = 259 ; 公共 int型 unit_h = 377 ;
     //用紙サイズ4 * 300 * 6 300dpiの300。。
公共 PaperSizeとは、用紙サイズ= 新しい新 PaperSizeを(" A6 "1800年1200年);
     //メトリック
プライベート GraphicsUnitユニットを= GraphicsUnit .pixel; 公共 GET GraphicsUnitユニット { => ユニット; SET { ユニット = 値;
          //もしメトリックミリメートル
IF(単位== GraphicsUnit.Millimeter) {
            //特に1200 / 25.4の点では、300 * 102にほぼ等しい
  paperSize.Height
= 102 ; paperSize.Width = 152 ;
unit_w
= 22である unit_h = 32 ; } } } }

 

その後、紙は写真で覆われてどのくらい計算することができPrintPageイベントに

            PrintUnit printUnit =新しいPrintUnit(); 
       g.PageUnit = printUnit.Unit。
       カラム= printUnit.paperSize.Width / printUnit.unit_w。 = printUnit.paperSize.Height / printUnit.unit_h。 int型 iは= 0 ; iが行<Iは++ { ためINT J = 0 ; J <カラム; J ++ { // g.DrawImage( // Resources._1、 // 新しいRectangle、(J * printUnit.unit_w、私はprintUnit.unit_h、printUnit.unit_w、printUnit.unit_hを*) // 新しいRectangle(0、0、Resources._1.Width、Resources._1.Height)、 // グラム。 PageUnit); g.DrawImage(Resources._1、J * printUnit.unit_w、i *はprintUnit.unit_h、printUnit.unit_w、printUnit.unit_h)。 } }

  興味深いことにのdrawImage(イメージ画像、長方形destRect、長方形srcRect、GraphicsUnit srcUnit)において、過負荷ピクチャ内の未知の理由のためにエラーがあります。

 少し混沌とした、私は波に説明するように強制しました。

PrintPageEventArgs.PageUnitプリントは測定単位を設定されているイベントでは、あなたがピクセルまたはミリメートルまたは他のデフォルトに従ってを描きたいユニットは、100分の1インチです。

//たとえば、A4用紙210ミリメートル×297ミリメートル、印刷で印刷する PrintPageイベント測定のセット単位でミリ
g.PageUnit = GraphicsUnit.Millimeter;
//全体A4紙被覆
g.DrawImage(イメージ、0、0、 210、297) ;

 それは簡単ですが、描画するときミリメートルピクセルに変換されますので、エラーを想像するのは簡単ですので、ミリメートル単位での使用は推奨されません。

ミリメートル単位でプロットした場合明らかにギャップがあるでしょう

 

 組版するのが面倒、もっと何か、スリップのスリップ。

 

 

 

 高エネルギーの前であなたは歓迎している、コードの混乱を思い出させます。

 https://files.cnblogs.com/files/zlyxm/DemoPrint_zlyxm.rar

  

 

 

おすすめ

転載: www.cnblogs.com/zlyxm/p/10937940.html