毎日水を先頭に、最後のブログの下に見えた、と8日の年、ちぇ、贅沢。
最近の仕事は非常に満足し、私は、方向、その後の機械学習がしたい最初の会社は現在、問題を解決するために前に蓄積することがあります。
人生についての話は終わった、またはメイントピックいます。(私はこのタイトルはああ人々を引き付けることができない感じ)
印刷:のPrintDocument
環境:WPFとWinフォーム
要件:組版と印刷の写真
パラメータの前に多くの問題を理解し、今でクリアしたい、容易にそれを記録しませんでした。
WPFは、一時的に同じイベントのBaiduの悪い通りで、Winフォーム前に解決するために、脇に置く印刷に描画PrintPageグラフィックスです。参照の他の一部
第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