1.3 2次元図形とアフィン変換(フォームのリサイズ)

1.3.4 フォームのリサイズ

 アフィン変換とは関係ありませんが,VBにおける表示ウィンドウの大きさの調整について解説しておきます.フォームやピクチャーボックスの大きさを変更するには,

(1) プロジェクト実行前に大きさを調整しておく

(2) Width,Heightプロパティを用い,プログラムコードで大きさを指定する

(3) プロジェクト実行後に調整する

の三つの方法があります.ここでは,3について説明します.

 フォームのBorderStyleプロパティが可変に設定されている場合,プロジェクトを実行した後でフォームのサイズを自由に変更できます.マウスカーソルをフォームの境界付近に近づけると矢印が現れるので左ボタンを押しながらドラッグするとサイズが変わります.

 しかし,フォームのサイズは変化しますが,ピクチャーボックスのサイズは変わりません.フォームのサイズを変更したとき,ピクチャーボックスのサイズも自動的に変わるようにするには,コードウィンドウの「プロシージャ」ボックスでフォームに対するResizeイベントを選択し,リスト1.14のようにコーディングしてください.

(リスト1.14)VB.Form_Resizeイベント(frmTestCGI)

 

Private Sub Form_Resize()

      Picture1.Width = ScaleWidth -  Picture1.Left - 10

      Picture1.Height = ScaleHeight  -  Picture1.Top - 10

       x0 = Picture1.Width / 2

        y0 = Picture1.Height / 2

End Sub

 

 ScaleWidthおよびScaleHeightは,Scaleプロパティと同様にフォームの座標系を変更するときに用いるプロパティです.上記のような使い方をすると現在の座標系でその値が得られます.WidthおよびHeightもフォームやピクチャーボックスなどのコントロールのサイズを表していますが,これらはコントロールに境界がある場合には,その境界を含めたサイズです.

 ScaleWidthおよびScaleHeightは境界を除いた領域(これをクライアントエリアという)のサイズを表しています.TopおよびLeftプロパティは,クライアントエリアに対する左上の位置を表しています.すなわち,Picture1.TopおよびPicture1.Leftはフォームのクライアントエリアに対するピクチャーボックスの左上の位置を表します.これらの関係を図1.10に示します.この図ではフォームの境界を大げさに表示しています.

(図1.10)サイズに関するプロパティ

(約4Kバイト)

 

 

 <課題1.1> [y平行移動]ボタンのMouseDownイベントのコード部分を自作しなさい.

 <課題1.2> 平行移動後であっても,もとの図形の中心を軸として回転およびスケーリングするように改良しなさい.

 Hint: 一つの方法として,図形の中心位置を保存する変数を作り,回転とスケーリング操作前に原点に平行移動し,操作後に元の位置へ平行移動することが考えられます.


Copyright 2000 酒井 幸市

新刊のご案内


Copyright 1997-2001 CQ Publishing Co.,Ltd.