.NET TIPS Windowsフォームで四角を描くには?[2.0、3.0、3.5、3.5 SP1、VS 2008、C#、VB]デジタルアドバンテージ 一色 政彦2008/10/02 |
![]() |
.NET Framework 3.5 SP1では、RectangleShapeコントロールが追加され、Windowsフォーム上に手軽に四角(=線による正方形もしくは長方形)が描けるようになった(※Visual Basic PowerPacksに所属するコントロールとして提供されるが、デフォルトのVisual Studio 2008 SP1環境の「C#」でも利用可能)。
本稿では、このRectangleShapeコントロールの利用方法を紹介する。なお、SP1を適用したVisual Studio 2008(以降、VS 2008)の使用を前提とする。
RectangleShapeコントロールの利用方法
RectangleShapeコントロールを使用するには、VS 2008のIDEのWindowsフォーム・デザイナを表示した状態で[ツールボックス]の[Visual Basic PowerPacks]タブを開き、その中にある[RectangleShape]コントロールをフォーム上にドラッグ&ドロップする。これにより、次の画面のようにフォーム上に四角(=RectangleShapeコントロール)が配置される。
![]() |
RectangleShapeコントロールの追加 |
後は、フォーム上に配置されたRectangleShapeコントロール(Microsoft.VisualBasic.PowerPacks名前空間)の四角の真ん中をつかんでドラッグ&ドロップで移動させたり、四隅や上下左右の中央をつかんでドラッグ&ドロップで拡大/縮小させたりすればよい。
もちろん、次の画面のように[プロパティ]ウィンドウで位置(Location)やサイズ(Size)を指定してもよい。例えば正方形にしたい場合は、サイズ指定の方が便利だ。
![]() |
四角の位置&サイズの指定 |
コードとして記述する場合にも、上の画面で分かるように、四角の位置はLocationプロパティ(Point型)、四角のサイズはSizeプロパティ(Size型)を使えばよい。 |
四角の線をカスタマイズする方法
RectangleShapeコントロールではいくつかの線種(=四角の種類)が(BorderStyleプロパティで)用意されている。具体的には以下のとおり(※この線種は、TIPS:Windowsフォームで直線を描くには?で提供されているものと同じである)。
BorderStyleプロパティ | 内容 | サンプル |
Solid | 実線 | ![]() |
Dash | 点線 | ![]() |
Dot | 点 | ![]() |
DashDot | 点線+点 | ![]() |
DashDotDot | 点線+点+点 | ![]() |
![]() |
||
RectangleShapeコントロールに用意されている線種 | ||
このほかに「Custom」という線種が用意されているが、これは独自の線を書きたい場合に使うもの。これを選択した場合は、OnPaintメソッドをオーバーライドして、そこでGraphicsクラス(System.Drawing名前空間)のDrawLineメソッドなどを使って自分で線を描く必要がある。 |
これらの線種は[プロパティ]ウィンドウの[BorderStyle]プロパティで指定できる。さらに、次の画面のように[BorderWidth]プロパティで線の太さを変更したり、[BorderColor]プロパティで線の色を変えたりすることも可能だ。
![]() |
線種や線の太さ/色の指定 |
四角の角を丸める方法
四角の角に丸みを持たせることもできる。これには、次の画面のように、[CornerRadius]プロパティを指定すればよい。
![]() |
四角の角を丸める指定 |
四角の塗りつぶしとそのパターン
当然ながらRectangleShapeコントロールの四角内を塗りつぶすこともできる。その際の色は、FillColorプロパティで設定できる。
また、その塗りつぶし方のパターンも(FillStyleプロパティで)55種類が用意されている。具体的には次の表のとおりだ。なお、この表の例ではFillColorプロパティに「ControlText」が設定されいるため、塗りつぶしの色は「黒」になっている。
FillStyleプロパティ | 内容 | サンプル |
Transparent | 透明(=表示なし) | ![]() |
Solid | 不透明(=すべてFillColorプロパティに設定された色で塗りつぶす) | ![]() |
Horizontal | 水平線パターン | ![]() |
Vertical | 垂直線パターン | ![]() |
ForwardDiagonal | 左上から右下への斜線のパターン | ![]() |
BackwardDiagonal | 右上から左下への斜線のパターン | ![]() |
Cross | 水平線と垂直線がクロスするパターン | ![]() |
DiagonalCross | 左上から右下への斜線と右上から左下への斜線がクロスするパターン | ![]() |
Percent05 | 5%の塗りつぶし | ![]() |
Percent10 | 10%の塗りつぶし | ![]() |
Percent20 | 20%の塗りつぶし | ![]() |
Percent25 | 25%の塗りつぶし | ![]() |
Percent30 | 30%の塗りつぶし | ![]() |
Percent40 | 40%の塗りつぶし | ![]() |
Percent50 | 50%の塗りつぶし | ![]() |
Percent60 | 60%の塗りつぶし | ![]() |
Percent70 | 70%の塗りつぶし | ![]() |
Percent75 | 75%の塗りつぶし | ![]() |
Percent80 | 80%の塗りつぶし | ![]() |
Percent90 | 90%の塗りつぶし | ![]() |
LightDownwardDiagonal | ForwardDiagonalと同じパターンで、線同士の間隔を50%狭めたもの | ![]() |
LightUpwardDiagonal | BackwardDiagonalと同じパターンで、線同士の間隔を50%狭めたもの | ![]() |
DarkDownwardDiagonal | LightDownwardDiagonalと同じパターンで、線の太さを2倍にしたもの | ![]() |
DarkUpwardDiagonal | LightUpwardDiagonalと同じパターンで、線の太さを2倍にしたもの | ![]() |
WideDownwardDiagonal | ForwardDiagonalと同じパターンで、線の太さを2倍にしたもの | ![]() |
WideUpwardDiagonal | BackwardDiagonalと同じパターンで、線の太さを2倍にしたもの | ![]() |
LightVertical | Verticalと同じパターンで、線同士の間隔を50%狭めたもの | ![]() |
LightHorizontal | Horizontalと同じパターンで、線同士の間隔を50%狭めたもの | ![]() |
NarrowVertical | Verticalと同じパターンで、線同士の間隔を75%狭めたもの | ![]() |
NarrowHorizontal | Horizontalと同じパターンで、線同士の間隔を75%狭めたもの | ![]() |
DarkVertical | Verticalと同じパターンで、線の太さを2倍にしたもの | ![]() |
DarkHorizontal | Horizontalと同じパターンで、線の太さを2倍にしたもの | ![]() |
DashedDownwardDiagonal | ForwardDiagonalと同じパターンで、線を点線にしたもの | ![]() |
DashedUpwardDiagonal | BackwardDiagonalと同じパターンで、線を点線にしたもの | ![]() |
DashedHorizontal | Horizontalと同じパターンで、線を点線にしたもの | ![]() |
DashedVertical | Verticalと同じパターンで、線を点線にしたもの | ![]() |
SmallConfetti | 紙吹雪風のパターン | ![]() |
LargeConfetti | SmallConfettiと同じパターンで、各ピースを大きくしたもの | ![]() |
ZigZag | ジグザグのパターン | ![]() |
Wave | チルダ(~)で構成したパターン | ![]() |
DiagonalBrick | 斜め方向に並べた「れんが」風のパターンで | ![]() |
HorizontalBrick | 水平方向に並べた「れんが」風のパターンで | ![]() |
Weave | 織物風のパターン | ![]() |
Plaid | 格子じまのパターン | ![]() |
Divot | 芝生風のパターン | ![]() |
DottedGrid | Crossと同じパターンで、線をドット(=点々)にしたもの | ![]() |
DottedDiamond | DiagonalCrossと同じパターンで、線をドット(=点々)にしたもの | ![]() |
Shingle | 屋根瓦風のパターン | ![]() |
Trellis | トレリス(=木製の格子フェンス)風のパターン | ![]() |
Sphere | 球状のものが密接して並んでいるパターン | ![]() |
SmallGrid | Crossと同じパターンで、線同士の間隔を50%狭めたもの | ![]() |
SmallCheckerBoard | チェス盤風のパターン | ![]() |
LargeCheckerBoard | SmallCheckerBoardと同じパターンで、各ピースを大きくしたもの | ![]() |
OutlineShapedDiamond | 基本的にDiagonalCrossと同じだが、アンチエイリアスが掛かっていない | ![]() |
SolidDiamond | 斜めに配置したチェス盤風のパターン | ![]() |
![]() |
||
RectangleShapeコントロールに用意されている塗りつぶしパターン |
なお、FillStyleプロパティが「Transparent」(透明)の場合、BackStyleプロパティに「Opaque」(不透明)を設定すれば、背景色(BackColorプロパティの値)が表示されるようになる。
塗りつぶしのグラデーションとそのパターン
FillColorプロパティで色を設定できることは説明したが、この色をグラデーションにすることもできる。これには、FillGradientStyleプロパティをデフォルトの「None」からほかの値に変更すればよい。FillGradientStyleプロパティに指定できる値は次の表のとおり(※このグラデーション・パターンも「TIPS:Windowsフォームで円を描くには?」で提供されているものと同じであるため、下の表ではOvalShapeコントロールによるグラデーション・パターン例をそのまま転載している)。
FillGradientStyleプロパティ | 内容 | サンプル |
None | グラデーションなし | ![]() |
Horizontal | 左から右へ水平方向のグラデーション・パターン | ![]() |
Vertical | 上から下への垂直方向のグラデーション・パターン | ![]() |
ForwardDiagonal | 左上から右下への斜め方向のグラデーション・パターン | ![]() |
BackwardDiagonal | 右上から左下への斜め方向のグラデーション・パターン | ![]() |
Central | 外側全体から中心に向かってのグラデーション・パターン | ![]() |
![]() |
||
RectangleShapeコントロールに用意されているグラデーション・パターン |
FillColorプロパティに設定された色から、FillGradientColorプロパティに設定された色へグラデーションが行われる。上の表のサンプルでは、FillColorプロパティに「Orange」を、FillGradientColorプロパティに「Yellow」を設定している。次の画面はその際の画面キャプチャだ。
![]() |
塗りつぶし色のグラデーションの指定 |
なお、FillStyleプロパティには必ず「Solid」を指定する必要がある。これ以外の塗りつぶしパターンとの組み合わせはできない。
四角内の背景に画像を設定する方法
以上で説明してきた塗りつぶしのほかに、背景画像を設定することもできる。これには、BackgroundImageプロパティを設定すればよい。画像の表示パターンも選択可能で、これはBackgroundImageLayoutプロパティで指定できる。
BackgroundImageLayoutプロパティに指定できる値は次の表のとおり。
FillGradientStyleプロパティ | 内容 | サンプル |
None | 左上に1つだけ表示される | ![]() |
Tile | デフォルト。コントロール内に敷き詰められる | ![]() |
Center | 中央に1つだけ表示される | ![]() |
Stretch | コントロール全体に縦横の比率を「無視」して拡大・縮小する | ![]() |
Zoom | コントロール全体に縦横の比率を維持して拡大・縮小する | ![]() |
![]() |
||
RectangleShapeコントロールに用意されている背景画像の表示パターン |
上の表のサンプルを見れば分かるが、背景色やグラデーションを設定している場合は、画像の後ろにその色が表示される。背景色を表示したくない場合は、BackStyleプロパティに「Transparent」を設定すればよい。また、グラデーションを表示したくない場合は、FillStyleプロパティに「Transparent」を設定すればよい。
RectangleShapeコントロールの注意点
最後に1つだけ注意点を挙げておく。RectangleShapeコントロールを利用したアプリケーションを実行するには、コンピュータに「Microsoft.VisualBasic.PowerPacks.Vs」というアセンブリ(.dllファイル)が必要となる。このアセンブリをインストール方法については、「TIPS:Windowsフォームで直線を描くには?」の「LineShapeコントロールの注意点」の項を参照してほしい。
利用可能バージョン:.NET Framework 2.0 利用可能バージョン:.NET Framework 3.0 利用可能バージョン:.NET Framework 3.5 利用可能バージョン:.NET Framework 3.5 SP1 カテゴリ:Windowsフォーム 処理対象:RectangleShapeコントロール 使用ライブラリ:RectangleShapeコントロール(Microsoft.VisualBasic.PowerPacks名前空間) 使用ライブラリ:Graphicsクラス(System.Drawing名前空間) 使用ライブラリ:Point型(System.Drawing名前空間) 使用ライブラリ:Size型(System.Drawing名前空間) 関連TIPS:Windowsフォームで直線を描くには? 関連TIPS:Windowsフォームで円を描くには? |
|
![]() |
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
||
|
||
![]() |