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

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

2005/07/19

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

ドキュメントへ
Wankuma.Drawing.Printing.PrinterInfo1d.htm

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

利用規約へ
../kiyaku.htm

using System;
using System.Drawing;
using Wankuma.Interop;

namespace Wankuma.Drawing.Printing
{
  /// <summary>
  /// PrinterInfo の概要の説明です。
  /// </summary>
  public sealed class PrinterInfo
  {
    private PrinterInfo()
    {
    }


    /// <summary>
    /// プリンタのマージンを取得します。
    /// 用紙の縦モードで取得です。
    /// </summary>
    /// <param name="PrinterName"></param>
    /// <param name="PageBounds">ページバウンズ</param>
    /// <returns>取得したマージン</returns>
    public static Rectangle MarginBounds( string PrinterName, Rectangle PageBounds )
    {
      //PrinterNameがnullや""だと例外
      if ( PrinterName == null || PrinterName == "" )
      {
        throw new ArgumentNullException("PrinterName");
      }


      //デバイスキャップラッパオブジェクトを作成
      using ( GetDeviceCapsWrapper devicecaps = new GetDeviceCapsWrapper() )
      {
        //各マージンは.NETFrameworkのデフォルトと同じ1inchとする
        int TopMargin = 100;
        int LeftMargin = 100;
        int RightMargin = 100;
        int BottomMargin = 100;

        if ( devicecaps.Init(PrinterName) == true )
        {

          int XRes = devicecaps.GetData(GetDeviceCapsWrapper.CommandIndex.LOGPIXELSX);
          int YRes = devicecaps.GetData(GetDeviceCapsWrapper.CommandIndex.LOGPIXELSY);

          LeftMargin = (int)((float)devicecaps.GetData(GetDeviceCapsWrapper.CommandIndex.PHYSICALOFFSETX) / (float)XRes * 100.0);
          TopMargin = (int)((float)devicecaps.GetData(GetDeviceCapsWrapper.CommandIndex.PHYSICALOFFSETY) / (float)YRes * 100.0);
          int Width = (int)((float)devicecaps.GetData(GetDeviceCapsWrapper.CommandIndex.PHYSICALWIDTH) / (float)XRes * 100.0);
          int Height = (int)((float)devicecaps.GetData(GetDeviceCapsWrapper.CommandIndex.PHYSICALHEIGHT) / (float)YRes * 100.0);

          int HorzRes = (int)((float)devicecaps.GetData(GetDeviceCapsWrapper.CommandIndex.HORZRES) / (float)XRes * 100.0);
          int VertRes = (int)((float)devicecaps.GetData(GetDeviceCapsWrapper.CommandIndex.VERTRES) / (float)YRes * 100.0);

          RightMargin = Width - HorzRes - LeftMargin;
          BottomMargin = Height - VertRes - TopMargin;

        }
        if ( PageBounds.Width > PageBounds.Height )
        {
          //返却用構造体の作成
          return new Rectangle(TopMargin, LeftMargin, PageBounds.Width - TopMargin - BottomMargin, PageBounds.Height - LeftMargin - RightMargin);
        }
        else
        {
          //返却用構造体の作成
          return new Rectangle(LeftMargin, TopMargin, PageBounds.Width - LeftMargin - RightMargin, PageBounds.Height - TopMargin - BottomMargin);
        }
        
      }
    }
  }
}

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

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

ブログ本家
広告