.NET TIPS

Windowsフォームで直線を描くには?[2.0、3.0、3.5、VS 2008、C#、VB]

デジタルアドバンテージ 一色 政彦
2008/09/04

 従来のVB6(Visual Basic 6.0)ではLineコントロール(=直線を描くためのコントロール)が存在していたが、.NET Frameworkでは、バージョン3.5まで、このようなコントロールが用意されていなかった(関連:「TIPS:Windowsフォームで直線コントロールを配置するには?」)。

 しかしVisual Studio 2008 SP1(以降、VS 2008 SP1)に付属するVisual Basic PowerPacks 1.2では、LineShapeコントロールが追加され、素直に直線が描けるようになった(C#でも利用可能)。本稿では、このLineShapeコントロールの利用方法を紹介する。

LineShapeコントロールの利用方法

 LineShapeコントロールを使用するには、VS 2008 SP1のIDEのWindowsフォーム・デザイナを表示した状態で[ツールボックス]の[Visual Basic PowerPacks]タブを開き、その中にある[LineShape]コントロールをフォーム上にドラッグ&ドロップする。これにより、次の画面のようにフォーム上に直線(=LineShapeコントロール)が配置される。

LineShapeコントロールの追加

 後は、フォーム上に配置されたLineShapeコントロール(Microsoft.VisualBasic.PowerPacks名前空間)の両端をドラッグ&ドロップで移動させればよい。もちろん、次の画面のように[プロパティ]ウィンドウで両端の座標(X1、Y1、X2、Y2)を指定してもよい。水平や垂直にしたい場合は、座標指定の方が便利だ。

直線の座標指定

 直線の位置は、上の画面で分かるように、X1/Y1/X2/Y2プロパティを使えばよいわけだが、コードとして記述する場合には、X1とY1はStartPointプロパティ、X2とY2はEndPointプロパティで、一括して設定できる。どちらのプロパティも、Point型(System.Drawing名前空間)の値で指定する。従って、例えば画面上部中央から画面左側中央に線を引きたい場合には次のようなコードになる。

lineShape1.StartPoint = new Point(this.Width / 2, 0);
lineShape1.EndPoint = new Point(0, this.Height / 2);
lineShape1.StartPoint = New Point(Me.Width / 2, 0)
lineShape1.EndPoint = New Point(0, Me.Height / 2)
StartPointプロパティとEndPointプロパティで座標を指定するサンプル・コード(上:C#、下:VB)
「lineShape1」はLineShapeコントロールである。

 また、LineShapeコントロールではいくつかの線種(=直線の種類)が(BorderStyleプロパティで)用意されている。具体的には以下のとおり。

BorderStyleプロパティ 内容 サンプル
Solid 実線
Dash 点線
Dot
DashDot 点線+点
DashDotDot 点線+点+点
LineShapeコントロールに用意されている線種

 このほかに「Custom」という線種が用意されているが、これは独自の線を書きたい場合に使うもの。これを選択した場合は、OnPaintメソッドをオーバーライドして、そこでGraphicsクラス(System.Drawing名前空間)のDrawLineメソッドなどを使って自分で線を描く必要がある。

 これらの線種は[プロパティ]ウィンドウの[BorderStyle]プロパティで指定できる。さらに、次の画面のように[BorderWidth]プロパティで線の太さを変更することも可能だ。

線種や線の太さの指定

LineShapeコントロールの注意点

 VS 2008 SP1のIDEでLineShapeコントロールを追加すると、自動的に「Microsoft.VisualBasic.PowerPacks.Vs」というアセンブリ(.dllファイル)への参照が追加される。このアセンブリは、VS 2008 SP1をインストールした一般的な環境では以下の場所に配置されている。

C:\Program Files\Common Files\Microsoft Shared\Visual Basic Power Packs\1.1

 しかし、このアセンブリは.NET Framework 3.5 SP1をインストールしただけでは配置されないので注意が必要だ。このアセンブリをインストールするには、「Visual Basic PowerPacks 1.2 セットアップ」などをクライアント環境で実行する必要がある。このセットアップは、Visual Basic PowerPacks関連のアセンブリをGAC(グローバル・アセンブリ・キャッシュ)にインストールするためのもので、ClickOnceや.MSIセットアップ(=Windowsインストーラ配置)の必須コンポーネントとして提供されているので(ただしVS 2008 SP1以降)、これを利用すればよい。

必須コンポーネント「Visual Basic PowerPacks 1.2 セットアップ」

 もしくは、その必須コンポーネントのモジュールをクライアントに配布して手動で実行してもよいだろう。このセットアップ・モジュールは、筆者の環境では以下の場所に配置されている。

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\VBPowerPacks\ja

 以上の説明のように、LineShapeコントロールを使う場合は別途Visual Basic PowerPacks 1.2のインストールが必要となるため、水平線/垂直線程度の直線を描きたいだけであれば、「TIPS:Windowsフォームで直線コントロールを配置するには?」の手法を採用した方が展開が楽である。

 なお、前述のアセンブリがインストールされている環境であれば、VS 2008 SP1を使って.NET Framework 2.0や3.0向けにビルドしたアプリケーションでも問題なく動作するようだ。 End of Article

利用可能バージョン:.NET Framework 2.0
利用可能バージョン:.NET Framework 3.0
利用可能バージョン:.NET Framework 3.5
カテゴリ:Windowsフォーム 処理対象:LineShapeコントロール
使用ライブラリ:LineShapeコントロール(Microsoft.VisualBasic.PowerPacks名前空間)
使用ライブラリ:Graphicsクラス(System.Drawing名前空間)
使用ライブラリ:Point型(System.Drawing名前空間)
関連TIPS:Windowsフォームで直線コントロールを配置するには?

この記事と関連性の高い別の.NET TIPS
Windowsフォームで直線コントロールを配置するには?
Windowsフォームで四角を描くには?
Windowsフォームで円を描くには?
VB PowerPacksの直線/丸/四角を選択されないようにするには?
[参照の追加]ダイアログに独自のアセンブリを表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間