パソコン活用研究BASIC&VB&EXCEL達人の道(旧称 パソコン活用研究5番街) FORMのグラフィックメソッドFORM上にグラフィックを描く手段としては、(1)Picture, Imageコントロールを貼り付ける。(2)ラインコントロールシェイプコントロールで図形を描く。 (3)グラフィックメソッドを使い図形を描く の3通りの方法があります。 おそらく一番多用されるのは、(1))Picture, Imageコントロール だと思いますが、(3)グラフィックメソッドもそれなりに知っていたら便利な手法です。今回はこのグラフィックメソッドについて簡単に追及してみます。 今回、説明する内容の一部は、Visual Basic4.0〜6.0に特有の方法になります。Visual Basic.Netや2005ではグラフィックに関する仕様が大きく変更されております。(今頃、のろのろVB4〜6のことを書くのも、どうかとは思いますが) グラフィック関連のテクニックについてはBASICの技法も参考になりますので、以下のBASICのページなどもご参照下さい。 グラフィックの基本 グラフィックの基本2(点で直線を描く) 1 グラフィックメソッドについて 昔の手続き型Basicの時代、画面にお絵かきするのに、line (直線をひく)、circle (円を描く)、pset (点をうつ)などの命令を使っていろんなお絵かきをしましたが、Form上にお絵かきするのに、Visual Basicでも同様なグラフィックメソッドが用意されています。 昔のBasicと違う点は、これらのグラフィック描画の命令は、あるコントロール(FormやPicture)のメソッドなので Form1.Circle ... とするとForm1上に円を描き、 Picture1.Circle ... とするとPicture1(コントロール)上に円を描く という点くらいでしょうか。 この点さえ意識すれば、あとはBasic時代と同じ感覚で使えます。グラフィックメソッドはFormだけでなくPictureに対しても同様に使えます。 代表的なグラフィックメソッド
各メソッドの使用例は後ほど研究することにします。 2 座標 (1) 座標の単位 座標の単位はデフォルトではtwipという単位になっていますが、ScaleModeプロパティで以下の単位を設定することができます。1センチが567twip、1インチが1440twipになります。ピクセルというのは画面の解像度の最小単位になります(すなわち、古きよき時代のBASICでの画面の座標と同じことになります) Form1.ScaleMode = 3 とすると、座標はピクセル単位になります。
(2) 座標のプロパティ 座標を表すプロパティには以下のようなものがあります。 Height, WidthはFormそのものの高さと幅になります。 ScaleHeight, ScaleWidthは、Formの内部の表示可能部分(内部座標)の高さ、幅になります。 Formに何かコントロール(ピクチャーボックス、イメージ、コマンドボタン他)を配置する時、それらのコントロールの左隅の位置がLeft, Topになります。 例えば、Pictureの位置を指定する場合は、Formの内部座標の値を指定します。 Picture1.Left = 100 Picture1.Top = 50 PictureをFormのど真ん中に配置したければ、以下のように指定すればOkです。 Picture1.Left = Form1.ScaleWidth/2 - Picture1.Width/2 Picture1.Top = Form1.ScaleHeight/2 - Picture1.Height/2 (3) CurrentX, CurrentY Form上の描画用カーソルの現在位置を取得、設定します。グラフィックメソッドを実行するとCurrentX,CurrentYは以下のように設定されます。 Circle 円の中心 Cls (0,0) Line 直線の終点 Print 次の表示位置 Pset 描かれた点の位置 3 色 (1) RGB 色を表す値は倍長整数で表し、テキスト、グラフィックで共通で使われます。 &Hbbggrr bb, gg, rr は青、緑、赤の色の成分でそれぞれ00〜FFの値をとります。 この形式の色の値をRGB値と読んでいます。 代表的な色の値
色を作成するには、RGB関数を使って、RGB(青成分,緑成分,赤成分)のように指定します。 例) RGB(255,0,255) =>紫になります。 RGB関数をグラッフィックメソッドの中に直接記述して、色の指定をすることができます。 例えば、黒の点を打つ場合は、 Form1.Pset (50, 50) , RGB(0,0,0) のようになります。 (2) QBColor 旧来のBASICに一般的だった16色の色番号で、色を指定するために、QBColorという関数も用意されていて、以下のように使います。 QBColor(色番号) QBColorの色番号
(3) RGB関数の使用例 RGB関数を使って、簡単な色作成プログラムを作成してみましょう。赤、緑、青の成分をスクロールバーで調整すると、ピクチャーの背景色として指定された色を表示するプログラムです。 ラベル、スクロールバー、ピクチャーを下のように配置します。 プログラムの主要部は以下の通りです。 スクロールバーの値に変化があれば、その値をラベルで表示+ピクチャーの背景色として表示するだけ、のシンプルなものです。
4 基本的なグラフィックメソッドとグラッフィック関係のプロパティ 基本的なグラフィックメソッドとして、Cls, Pset, Pointの使い方について説明します。 【 書式】 [control.] Cls グラッフィックメソッドで描画したグラフィックとテキストを消去します。Clsを実行するとCurrentX,CurrentYは0に設定されます。 Cls実行前にAutoRedrawをFalseにすると、AutoRedrawがTrueの間に描画したグラフィックとテキストは消去されません。 [control.] Pset [Step] (x,y) [,col] (x,y)の位置にcolで指定した色で点を描画します。StepをつけるとCurrentX,CurrentYからの相対位置になります。コントロール(Form等)のDrwaWidthプロパティを1以上にすると、(x,y)を中心にした太い点(円)が描かれます。描いた点を消すには、コントロールの背景色(BackColorプロパティ)と同じ色をcolに指定することで、可能です。 [control.] Point(x,y) (x,y)位置の点の色をRGB値で取得します。 取得したRGB値はlong型整数で、&Hbbggrr(bb, gg, rr は青、緑、赤の色の成分でそれぞれ00〜FFの値をとります。)の形になっています。 [control.] Circle [Step] (x,y), r [, [col][, [start][,end],[aspect]]] Step Stepを指定すると(x,y)の位置座標はCurrentX,CurrentYからの相対座標を意味します。 (x,y) 円の中心座標 r 半径 col 色を示すRGB値 start, end 円弧を描く時の開始角と終了角。ラジアンで指定します。 aspect 円の縦横比。デフォルトは1.0。1より大きければ縦長、小さければ横長になります。 FormのプロパティのFillColor,FillStyleで円内を塗りつぶす色、スタイルを指定することができます。 [control.] Line [[Step1](x1,y1)]-[Step2](x2,y2)[,[col][,{B/BF}]] (x1,y1)-(x2,y2)に直線を描画します。(x1,y1)を省略すると、描画カーソルの現在位置(CurrentX,CurrentY)から(x2,y2)に直線を描画します。 Step1,Step2 Step1を指定すると現在位置からの相対位置、Step2を指定すると第一座標(x1,y1)からの相対位置になります。 col 色を示すRGB値 B/BF Bを指定すると(x1,y1)-(x2,y2)を対角の頂点とする四角形を描き、BFを指定するとその四角形の中を、Fillcolor,FillStyleを使って塗りつぶします。 (2) グラッフィック関連のプロパティ Form等のコントロールのプロパティで描画に関するものを説明します。 FillColor 塗りつぶす色。 (設定例) Form1.Fillcolor = RGB(255,0,255) FillStyle 塗りつぶすスタイル。 (設定例) Form1.FillStyle = 1
DrawWidth 描く線の太さを指定する。1〜32767で単位はピクセルになります。 DrawMode 描画のモードを指定します。 (Destは現在画面に表示している色。Penは描画する線の色=ForeColorやFillColor)
DrawStyle 線の種類を指定
(3) グラフィックメソッド使用例 [描画]ボタンを押すと、赤、青、緑の円を描くプログラムです。お互いの円の重なった部分は、DrawMode=15(表示色とペンの色のorをとる)で描いています。すなわち、光の三原色の重なりと同じパターンです。 まず、背景色BackColorを黒=RGB(0,0,0)にして、 DrawMode=15(表示色とペンの色のor) FillStyleは0(塗りつぶし) 塗りつぶす色はFillColorでそれぞれ赤、緑、青に設定
TopPage > Visual BasIc&Excel活用研究目次 |