わんくまライブラリ Wankuma.WindowsForms.WankumaLineクラス Version1
2005/07/16
この文書はVisual Studio 2003(.NET1.1)をベースに記述されています。それ以降のバージョンや、あなたが読んでいる時点では変更されている可能性があります。
またバージョンアップされている場合にはなんらかかの不具合を含んでいる可能性があります。
ドキュメントへ
Wankuma.WindowsForms.WankumaLine1d.htm
ソースファイル直接ダウンロードへ
Wankuma.WindowsForms.WankumaLine1c.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 WankumaLine : System.Windows.Forms.UserControl { #region public enum enum線パターン /// <summary> /// 線の描画種類 /// </summary> public enum enum線パターン { /// <summary> /// 対角に線を引きます。\ /// </summary> 対角バックスラッシュ, /// <summary> /// 対角に線を引きます。/ /// </summary> 対角スラッシュ, /// <summary> /// 水平に線を引きます- /// </summary> 水平, /// <summary> /// 垂直に線を引きます。| /// </summary> 垂直 } #endregion #region メンバ #region private float _線幅; /// <summary> /// 線幅のメンバ /// </summary> private float _線幅; #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 private enum線パターン _pattern; /// <summary> /// 線のパターン /// </summary> private enum線パターン _pattern; #endregion #region public enum線パターン 線パターン /// <summary> /// 線のパターン /// </summary> [DefaultValue(enum線パターン.対角バックスラッシュ)] public enum線パターン 線パターン { set { this._pattern = value; } get { return this._pattern; } } #endregion #endregion #region 自動生成 /// <summary> /// 必要なデザイナ変数です。 /// </summary> private System.ComponentModel.Container components = null; /// <summary> /// コンストラクタ /// </summary> public WankumaLine() { // この呼び出しは、Windows.Forms フォーム デザイナで必要です。 InitializeComponent(); // TODO: InitializeComponent 呼び出しの後に初期化処理を追加します。 SetStyle(ControlStyles.ResizeRedraw, true); this._線幅 = 1.0F; } /// <summary> /// 使用されているリソースに後処理を実行します。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region コンポーネント デザイナで生成されたコード /// <summary> /// デザイナ サポートに必要なメソッドです。このメソッドの内容を /// コード エディタで変更しないでください。 /// </summary> private void InitializeComponent() { // // WankumaLine // this.Name = "WankumaLine"; } #endregion #endregion #region protected override void OnPaint(PaintEventArgs e) /// <summary> /// 描画処理 /// </summary> /// <param name="e"></param> protected override void OnPaint(PaintEventArgs e) { base.OnPaint (e); //線パターンにあわせて描画する。 if ( this._pattern == enum線パターン.水平 || this._pattern == enum線パターン.垂直 ) { 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 width2 = x + this._線幅 > width ? width : x + this._線幅; float height2 = y + this._線幅 > height ? height : y + this._線幅; //線を描画する //線パターンにあわせて描画する。 if ( this._pattern == enum線パターン.水平 ) { //上辺 e.Graphics.FillRectangle(sb, x, y, width, height2); } else if ( this._pattern == enum線パターン.垂直) { //左辺 e.Graphics.FillRectangle(sb, x, y, x + width2, height); } } } else if ( this._pattern == enum線パターン.対角バックスラッシュ || this._pattern == enum線パターン.対角スラッシュ ) { using ( Pen pen = new Pen(this.ForeColor, this._線幅) ) { //線の端をスクエアにする pen.StartCap = LineCap.Square; //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; //線パターンにあわせて描画する。 if ( this._pattern == enum線パターン.対角バックスラッシュ ) { e.Graphics.DrawLine(pen, x, y, width, height); } else if ( this._pattern == enum線パターン.対角スラッシュ ) { e.Graphics.DrawLine(pen, width, y, x, height); } } } } #endregion }//class }//namespace