- ベストアンサー
VBを用いた対話型図形処理
VB6で以下のような簡単な図形を扱うプログラムを作りたいのです。どこからとっかかればいいか教えてください。VBの経験は長いのですが図形処理は初めてです。 (1)描かれた線の上にマウスカーソルを置くと、線の長さを表示する。 (2)描画枠の隅にカーソルを持って行くと、カーソルの形が変わって、それをドラッグすると描画枠が変形する。(描画図形を拡大/縮小したい)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Mouse位置を基点にして、文字を表示するとします。最も簡単には、PictureBoxにAutoSize = TrueのLabelを貼り付け、Visible = Falseにセットしておきます。これが初期状態です。基点とLabelのOffset量も最初に決めておきます。 Mouseが図形を認識したと判断されたとき. (1)表示情報をLabelにセットする. (2)LabelのTop,Leftを、基点とOffset量から再セットする. (3)LabelのTop,Left,Width,Heightから、LabelがPictureBoxの描画領域をはみ出していないか、チェックする. (4)はみ出す場合は、Offset量を再計算し、LabelのTop,Leftを、再セットする. (5)LabelのVisible = Trueとする. Mouseが図形から外れたと判断されたとき. (1)LabelのVisible = Falseとする. 以上において. (1)PictureBoxに貼り付けたLabelのTop,Left,Width,Heightは、PictureBoxの内部座標に連動します。 (2)PictureBoxの幅,高さは、PictureBoxのScaleWidthとScaleHeightで取得できます。 (3)PictureBoxの原点は、Dufaultで左上隅が(0,0)で、下方向がyの正です。 (4)内部座標の原点と方向,内部Scaleを変更するには、PictureBoxのScaleメソッドとScaleModeを利用します。 (5)以上のTop,Left,(Scale)Width,(Scale)Heightは、内部座標と常に連動するので、ロジックは常に適用できます。 ・・・でも、もっといい方法が知りたい・・・。
その他の回答 (1)
もっと良い方法があれば、私も知りたいのですが、今までは次のようにやって来ました。 (1) 描かれた線の認識ですが、VB6には図形認識に関する適当なEventがないと思います。なので、点や線の端点の座標を記録するClassをつくり、Mouse座標から探索しました。このクラスをPictureBoxなどのMouse Eventで使用します。 (2) これには適当なProperty,Event,Methodがあると思います。
お礼
さっそく有り難うございました。 (1)線の認識は、自分でやるしかないわけですね。 線を認識したとして、その情報をカーソル位置付近に表示する方法はご存じでしょうか? (2)その後調べた結果、どうにか出来そうです。
お礼
なるほど! ご丁寧な説明、有り難うございます。 やってみます。