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

わんくまライブラリ Wankuma.WindowsForms.WankumaBoxクラス Version1

2005/01/21

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

ドキュメントへ
Wankuma.WindowsForms.WankumaBox1d.htm

ソースファイル直接ダウンロードへ
Wankuma.WindowsForms.WankumaBox1c.txt

利用規約へ
../kiyaku.htm

#region Using
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Data;
using System.Windows.Forms;
#endregion

namespace Wankuma.WindowsForms
{
  /// <summary>
  /// 常に箱を描画するコントロール
  /// </summary>
  public class WankumaBox : System.Windows.Forms.UserControl
  {
    #region 自動生成
    /// <summary>
    /// 必要なデザイナ変数です。
    /// </summary>
    private System.ComponentModel.Container components = null;

    /// <summary>
    /// コンストラクタ
    /// </summary>
    public WankumaBox()
    {
      // この呼び出しは、Windows.Forms フォーム デザイナで必要です。
      InitializeComponent();

      // TODO: InitializeComponent 呼び出しの後に初期化処理を追加します。
      SetStyle(ControlStyles.ResizeRedraw, true);
    }

    /// <summary>
    /// 使用されているリソースに後処理を実行します。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
      if( disposing )
      {
        if(components != null)
        {
          components.Dispose();
        }
      }
      base.Dispose( disposing );
    }

    #region コンポーネント デザイナで生成されたコード 
    /// <summary>
    /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
    /// コード エディタで変更しないでください。
    /// </summary>
    private void InitializeComponent()
    {
      // 
      // WankumaBox
      // 
      this.Name = "WankumaBox";

    }
    #endregion
    #endregion
    #region メンバ
    #region private float _線幅 = 1.0F;
    /// <summary>
    /// 線幅のメンバ
    /// </summary>
    private float _線幅 = 1.0F;
    #endregion
    #region public float 線幅
    /// <summary>
    /// 描画する線幅を指定する
    /// </summary>
    [DefaultValue(1.0F)]
    public float 線幅
    {
      set
      {
        if ( value < 1.0 )
        {
          this._線幅 = 1.0F;
        }
        else
        {
          this._線幅 = value;
        }
      }
      get
      {
        return this._線幅;
      }
    }
    #endregion
    #region public bool _右描画 = false;
    /// <summary>
    /// 右を描画するかどうかのメンバ
    /// </summary>
    public bool _右描画 = false;
    #endregion
    #region public bool 右描画
    /// <summary>
    /// 右下を描画するかどうか
    /// </summary>
    [DefaultValue(false)]
    public bool 右描画
    {
      set
      {
        this._右描画 = value;
      }
      get
      {
        return this._右描画;
      }
    }  
    #endregion
    #region public bool _下描画 = false;
    /// <summary>
    /// 右下を描画するかどうかのメンバ
    /// </summary>
    public bool _下描画 = false;
    #endregion
    #region public bool 下描画
    /// <summary>
    /// 右下を描画するかどうか
    /// </summary>
    [DefaultValue(false)]
    public bool 下描画
    {
      set
      {
        this._下描画 = value;
      }
      get
      {
        return this._下描画;
      }
    }  
    #endregion  
    #endregion

    #region protected override void OnPaint(PaintEventArgs e)
    /// <summary>
    /// 描画処理
    /// </summary>
    /// <param name="e"></param>
    protected override void OnPaint(PaintEventArgs e)
    {
      base.OnPaint (e);
      using ( SolidBrush sb = new SolidBrush(this.ForeColor) )
      {
        //xy等を調べる
        float x = e.Graphics.VisibleClipBounds.X;
        float y = e.Graphics.VisibleClipBounds.Y;
        float width = e.Graphics.VisibleClipBounds.Width;
        float height = e.Graphics.VisibleClipBounds.Height;

        float x2 = width - this._線幅 < x ? x : width - this._線幅;
        float y2 = height - this._線幅 < y ? y : height - this._線幅;
        float width2 = x + this._線幅 > width ? width : x + this._線幅;
        float height2 = y + this._線幅 > height ? height : y + this._線幅;
        
        //線を描画する
        //左辺
        e.Graphics.FillRectangle(sb, x, y, x + width2, height);
        //上辺
        e.Graphics.FillRectangle(sb, x, y, width, height2);
        if ( this._右描画 == true )
        {
          //右辺
          e.Graphics.FillRectangle(sb, x2, y, width, height);
        }
        if ( this._下描画 == true )
        {
          //下辺
          e.Graphics.FillRectangle(sb, x, y2, width, height);
        }
      }
    }
    #endregion

    

  }
    
}


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

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

ブログ本家
広告