中の技術日誌
 ホーム / 上へ

わんくまライブラリ Wankuma.Drawing.Printing.PrinterInfoクラス Version1

2005/07/19

この文書はVisual Studio 2003(.NET1.1)をベースに記述されています。それ以降のバージョンや、あなたが読んでいる時点では変更されている可能性があります。
またバージョンアップされている場合にはなんらかかの不具合を含んでいる可能性があります。

ソースファイルへ
Wankuma.Drawing.Printing.PrinterInfo1s.htm

ソースファイル直接ダウンロードへ
Wankuma.Drawing.Printing.PrinterInfo1c.txt

利用規約へ
../kiyaku.htm

このクラスを利用するために必要なクラス

Wankuma.Interop.GetDeviceCapsWrapper Version1
Wankuma.Interop.GetDeviceCapsWrapper1d.htm

クラスの説明

プリンタの情報はPrinterSettingsクラスで取得できます。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfSystemDrawingPrintingPrinterSettingsClassTopic.asp

ただしこのPrinterSettingsはWindowsとしてプリンタの管理している情報のごく一部のみにしかアクセスすることが出来ません。

本来のプリンタの余白を、Wankuma.Interop.GetDeviceCapsWrapper経由で取得するようにしたのがこのクラスです。

スタティックメソッドの説明

public static Rectangle MarginBounds( string PrinterName, Rectangle PageBounds )

余白を取得します。プリンタ名と、印刷するページのサイズなどを渡すと余白を加味したRectangleを返します。

テストコード

C#

System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();

Rectangle 元矩形 = new Rectangle(0, 0, ps.PaperSizes[0].Width, ps.PaperSizes[0].Height );
Rectangle 結果矩形 = Wankuma.Drawing.Printing.PrinterInfo.MarginBounds(ps.PrinterName, 元矩形);

System.Diagnostics.Debug.WriteLine(string.Format( "Top:{0}", 元矩形.Top ));
System.Diagnostics.Debug.WriteLine(string.Format( "Height:{0}", 元矩形.Height ));
System.Diagnostics.Debug.WriteLine(string.Format( "Left:{0}", 元矩形.Left ));
System.Diagnostics.Debug.WriteLine(string.Format( "Width:{0}", 元矩形.Width ));

System.Diagnostics.Debug.WriteLine(string.Format( "Top:{0}", 結果矩形.Top ));
System.Diagnostics.Debug.WriteLine(string.Format( "Height:{0}", 結果矩形.Height ));
System.Diagnostics.Debug.WriteLine(string.Format( "Left:{0}", 結果矩形.Left ));
System.Diagnostics.Debug.WriteLine(string.Format( "Width:{0}", 結果矩形.Width ));

VB

Dim ps As New System.Drawing.Printing.PrinterSettings

Dim 元矩形 As New Rectangle(0, 0, ps.PaperSizes.Item(0).Width, ps.PaperSizes.Item(0).Height)
Dim 結果矩形 As Rectangle = Wankuma.Drawing.Printing.PrinterInfo.MarginBounds(ps.PrinterName, 元矩形)

Debug.WriteLine(String.Format("Top:{0}", 元矩形.Top))
Debug.WriteLine(String.Format("Height:{0}", 元矩形.Height))
Debug.WriteLine(String.Format("Left:{0}", 元矩形.Left))
Debug.WriteLine(String.Format("Width:{0}", 元矩形.Width))

Debug.WriteLine(String.Format("Top:{0}", 結果矩形.Top))
Debug.WriteLine(String.Format("Height:{0}", 結果矩形.Height))
Debug.WriteLine(String.Format("Left:{0}", 結果矩形.Left))
Debug.WriteLine(String.Format("Width:{0}", 結果矩形.Width))

結果

Top:0
Height:1799
Left:0
Width:1201
Top:20
Height:1759
Left:20
Width:1161

もとのサイズは紙のサイズそのものですが、結果の矩形は余白を加味した矩形になっています。

この例では上下左右共に0.2Inchの余白で印刷可能なプリンタのようです。


勉強会: 05/18 大阪 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告