VBメニュー
トップページ
マネジメント パソコン英語
進学 ・資格 仕事 ・生活 技能ハッピーライフ

 

《テーマ》グラフィックス入門

 

《解説》

 

1.座標系


 座標系は、画面上、フォーム上、およびピクチャ ボックスや Printer オブジェクトなどのコンテナ上の位置を定義するための 2 次元グリッドである。このグリッド上の位置は、次のような形式で指定する。

(x, y)

 x の値は x 軸方向の位置を表し、特に指定しない限り、左端が 0 である。y の値は y 軸方向の位置を表し、特に指定しない限り、上端が 0 である。

 Visual Basic の座標系には、次のような規則が適用される。

 コントロールの移動またはサイズ変更を行う場合は、そのコントロールのコンテナの座標系を使用する。フォーム上にオブジェクトを直接描画する場合は、そのフォームがコンテナとなる。フレームまたはピクチャ ボックス (PictureBox) 内にコントロールを描画する場合は、そのフレーム (Frame) またはピクチャ ボックスがコンテナになる。

 すべてのグラフィックス メソッドおよび Print メソッドでは、コンテナの座標系が使用される。たとえば、ピクチャ ボックス内にグラフィックスを描画するステートメントは、そのピクチャ ボックスの座標系を使用して記述する。

 フォームのサイズ変更または移動を行うステートメントでは、フォームの位置およびサイズは必ず twip 単位で記述する。
 フォームのサイズ変更または移動を行うコードを記述するときは、まず、スクリーン (Screen) オブジェクトの Height プロパティと Width プロパティを調べること。これによって、そのフォームを画面に正しく表示することができる。

 画面の左上隅の座標は常に (0, 0) である。コンテナの座標系でも、特に指定しない限り、コンテナの左上隅の座標が (0, 0) となる。
 各座標軸上の位置を表すために使用する長さの単位のことを、スケールと呼ぶ。Visual Basic では、それぞれの軸に個別にスケールを割り当てることができる。

 座標系の軸の方向、開始位置、およびスケールは変更できる。


2.グラフィックスの単位 twip


 特に指定しない限り、Visual Basic の移動ステートメント、サイズ変更ステートメント、およびグラフィカル描画ステートメントではすべて、単位として twip が使用される。1 twip は、プリンタの 1 ポイントの 1/20 で、1,440 twip で 1 インチ、567 twip で 1cm となる。twip で表現すると、オブジェクトが印刷されたときのサイズが簡単にわかる。画面上でどれくらいの大きさになるかは、ディスプレイ装置のサイズによって異なる。


3.グラフィカル コントロールの使い方


 Visual Basic には、アプリケーションでグラフィックスを描画するための、次のようなコントロールがある。

イメージ (Image) コントロール

ライン (Line) コントロール

シェイプ (Shape) コントロール

グラフィカル コントロールの利点

 イメージ コントロール、ライン コントロール、およびシェイプ コントロールは、デザイン時にグラフィックスを作成できる有用なコントロールである。これらのグラフィカル コントロールは、必要とするシステム リソースが Visual Basic のほかのコントロールよりも少ないため、アプリケーションのパフォーマンスが向上する。

 グラフィカル コントロールを使うと、グラフィックス メソッドを使う場合よりも少ないコードでグラフィックスを作成できる。たとえば、Circle メソッド、シェイプ コントロールのいずれによっても円を描画することができるが、Circle メソッドでは、円を実行時に描画するためのコードが必要である。これに対し、シェイプ コントロールでは、デザイン時にフォーム上にコントロールを描画し、必要に応じてプロパティを設定するだけで済む。

グラフィカル コントロールの制限事項

 グラフィカル コントロールは、アプリケーションに対する要求を最小限にとどめることによって、最大のパフォーマンスが得られるように設計されている。ただし、そのような機能を実現するため、次に示すように Visual Basic のコントロールに共通の基本機能がいくらか制限されている。

 グラフィカル コントロールをほかのコントロールの上に重ねて描画することはできない。ただし、グラフィカル コントロールが、ほかのコントロールの上に描画できるピクチャ ボックスのようなコンテナの内部にある場合は別。

 グラフィカル コントロールには、実行時にフォーカスを設定できない。

 グラフィカル コントロールをほかのコントロールのコンテナとして利用することはできない。

 グラフィカル コントロールには、hWnd プロパティがない。


4.グラフィックス メソッドの使い方


 Visual Basic には、グラフィカル コントロールのほかに、グラフィックスを作成するためのいくつかのメソッドがある。グラフィックス メソッドはフォームおよびピクチャ ボックスに対して実行できる。

  メソッド 内 容
  Cls すべてのグラフィックス、および Print メソッドの出力内容をクリアします。
  Pset 個々のピクセルの色を設定します。
  Point 指定した点の色を取得します。
  Line 直線、ボックス、または塗りつぶしたボックスを描画します。
  Circle 円、楕円、または弧を描画します。
  PaintPicture 任意の位置にグラフィックスを描画します。


 メモ AutoRedraw プロパティが真 (True) に設定されている場合、Print メソッドで作成される内容はオブジェクトに出力され、メモリ イメージとしても保存される。この動作は、PSet メソッド、Line メソッド、および Circle メソッドと同じであるため、Print メソッドをグラフィックス メソッドの 1 つと考えることもできる。

グラフィックス メソッドの利点

 グラフィックス メソッドは、グラフィカル コントロールを使用すると処理が複雑になる場合に有効である。たとえば、グラフのマス目を描画する場合、ライン (Line) コントロールでは配列が必要であるが、Line メソッドを使うとわずかなコードを記述するだけで済む。フォームのサイズが変わるたびに配列内のライン コントロールの位置を調整するのは、さらに複雑な処理となる。これに対し、Line メソッドの場合に必要なのは線の再描画だけである。

 [バージョン情報] ダイアログ ボックスに色の付いた線を表示する場合のように、フォーム上に短時間だけ表示されるグラフィックスが必要な場合がある。このような場合、そのためだけに 1 つのコントロールを使用する代わりに、グラフィックス メソッドを実行する数行のコードを記述できる。

 グラフィックス メソッドには、グラフィカル コントロールでは利用できない描画機能がある。たとえば、弧の描画やピクセル単位の描画は、グラフィックス メソッドでだけ行える。グラフィックス メソッドで作成したグラフィックスは、フォーム内の独自の階層に表示される。この階層は、フォーム上のほかのすべてのコントロールが表示される階層より後ろにある。したがって、グラフィックス メソッドは、ほかのすべてのオブジェクトの背景として表示されるグラフィックスを作成する場合に、特に有効である。

グラフィックス メソッドの制限事項

 グラフィックス メソッドを使ったグラフィックスの作成はコード内で実行されるため、描画結果を確認するには、そのアプリケーションを実行することが必要である。デザイン時にグラフィカル コントロールの外観を調整する方が、グラフィックス メソッドのコードを実行しては修正するという作業を繰り返すよりも簡単である。したがって、単純なデザインのインターフェイスを作成する場合は、グラフィックス メソッドよりグラフィカル コントロールを使用する方が便利である。


5.色の指定方法


 Visual Basic では、関連するすべてのプロパティおよびグラフィックス メソッドで、統一された方法で色を処理することができる。1 つの色は、長整数型 (Long) のデータで表され、このデータの値は色を処理するすべての文脈で同じ色を意味する。

実行時には、次の 4 つの方法で色を設定できる。

 RGB 関数を使用。

 QBColor 関数を使って、16 色の Microsoft QuickBasic カラーのいずれかを選択。

 オブジェクト ブラウザの一覧にある、組み込み定数を使用。

 色の値を直接入力。

 RGB 関数を使うと、利用可能なすべての色を設定することができる。

 RGB 関数を使って色の設定を行うには、光の 3 原色である、赤、緑、および青のそれぞれに、0 〜 255 の数値を割り当てる。各色の明度は、0 で最小、255 で最大になる。

 これら 3 つの数値を、RGB 関数の引数として指定する。引数は、赤、緑、青の順番で指定。

 関数から返される値を、カラー関連プロパティに設定したり、グラフィックス メソッドの引数として使用する。
 すべての色は、光の 3 原色を組み合わることによって作り出すことができる。

 例:

' 背景を緑色に設定。
Form1.BackColor = RGB(0, 128, 0)
' 背景を黄色に設定。
Form2.BackColor = RGB(255, 255, 0)
' 点を濃い青に設定。
PSet (100, 100), RGB(0, 0, 64)

[MSDNより引用]

 

VBメニュー
トップページ
マネジメント パソコン英語
進学 ・資格 仕事 ・生活 技能ハッピーライフ