投稿時間:2003/02/26(Wed) 22:25 投稿者名:Starfish
Eメール:
URL :
タイトル:Re: 印刷時の余白サイズ(下と左側)
ここのサンプルに右と下の印字不可能の領域のサイズを求める処理を追加してみました。 ついでに、スケールの変換は即値を使わないようにしてみました。
Private Declare Function GetDeviceCaps Lib "gdi32" _ (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Const PHYSICALHEIGHT = 111 '物理的高さ Private Const PHYSICALWIDTH = 110 '物理的幅 Private Const PHYSICALOFFSETX = 112 '印刷可能なX方向のマージン Private Const PHYSICALOFFSETY = 113 '印刷可能なY方向のマージン Private Sub Command1_Click() Dim LeftMargin As Long Dim TopMargin As Long Dim PhysHeight As Long Dim PhysWidth As Long Dim RightMargin As Long Dim BottomMargin As Long 'マージンをピクセル単位で取得しそれをmmに変換 LeftMargin = Printer.ScaleX(GetDeviceCaps(Printer.hdc, PHYSICALOFFSETX) _ , vbPixels, vbMillimeters) TopMargin = Printer.ScaleY(GetDeviceCaps(Printer.hdc, PHYSICALOFFSETY) _ , vbPixels, vbMillimeters) PhysWidth = Printer.ScaleX(GetDeviceCaps(Printer.hdc, PHYSICALWIDTH) _ , vbPixels, vbMillimeters) PhysHeight = Printer.ScaleY(GetDeviceCaps(Printer.hdc, PHYSICALHEIGHT) _ , vbPixels, vbMillimeters) RightMargin = PhysWidth - LeftMargin - _ Printer.ScaleX(Printer.ScaleWidth, vbTwips, vbMillimeters) BottomMargin = PhysHeight - TopMargin - _ Printer.ScaleY(Printer.ScaleHeight, vbTwips, vbMillimeters)
Label1.Caption = "プリンター用紙印刷余白(左) : " & LeftMargin & " mm" Label2.Caption = "プリンター用紙印刷余白(上) : " & TopMargin & " mm" Label3.Caption = "プリンター用紙サイズ(幅) : " & PhysWidth & " mm" Label4.Caption = "プリンター用紙サイズ(高さ) : " & PhysHeight & " mm" Label5.Caption = "プリンター用紙印刷余白(右) : " & RightMargin & " mm" Label6.Caption = "プリンター用紙印刷余白(下) : " & BottomMargin & " mm"
|