- ベストアンサー
VB6でベクター矢印描画
VB6で日曜プログラミングをしているものです。 パワーポイントのオートシェイプの線のような具合で 矢印をPictureBox内で扱いたいのですが、そのようなコントロールなど ご存知の方いらっしゃいましたらご教示お願いできませんでしょうか? イメージとしては、PicutreBox内でクリックすると矢印描画開始、 もう一回クリックして確定。 矢印の上でクリックすると、矢印にフォーカスが当たる(頭と尻尾に○が表示?)。 確定後はドラッグアンドドロップが可能で矢印の先端をドラッグアンドドロップ することで、矢印の長さ、傾きの調整が可能。 みたいなものをイメージしています(まんまパワポのオートシェイプ) お力お貸しください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
PictureBoxコントロールの中にLineコントロールなどを組み合わせて貼り付けて 矢印にしてはどうでしょうか? PictureBoxのMouseDownイベントでクリックしたポイントがわかります。 確定後の操作もMouseDown MouseUp、MouseMoveを使い 座標から矢印をクリックしたかどうかを判定します。 ドラッグはMouseDown→MouseUpするまでの間がドラッグしたことになります。 あくまで一案ですが。
その他の回答 (2)
- sha-girl
- ベストアンサー率52% (430/816)
どうも。頑張っておられるようですね。 >そうするとLine(矢印)がImageの後ろに隠れてしまうのです。 >最前面からLine(矢印)、Image、PictureBoxの順にしたいのですが、 >現状Lineメソッドで記述しているため、Imageが最前面に来てしまいます。 私がいっていたのはPictureBoxのLineメソッドではありません。ツールボックス (PictureBoxとかあるとこ)にあるLineです。 そしてPictureBoxの選択状態でLineを貼り付けてみてください。 そうすればPictureBoxの内部に貼りつきます。 PictureBoxの内部に貼り付けているならPictureBoxを移動させたとき Lineも移動するので確かめてみてください。
お礼
sha-girlさん、お礼のお返事が送れて申し訳ございません。 Lineコントロールを使えばzorder指定ができるんですね。 ありがとうございます。 Lineコントロールは、イベントをハンドルできないので、 無理だと勝手に決め付けてしまっていて、 どうせイベントをハンドルできないなら、Lineメソッドで描いてしまえっ、 というのりでやっていました。 ありがとうございました。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
昨晩質問を見て、昨日は何も思いつきませんでした、、、 sha-girl氏の発言 >PictureBox このアイディアは、思いつきませんでした。 んで、これに便乗して・・・ リージョンと組み合わせると、多角形のオブジェクトが作成することができます。 参考URLに「みーくんパパの仕事部屋」を載せておきます。 ※角の丸いウィンドウ ※吹き出し型ウィンドウ などがいいサンプルになるかも?
お礼
sha-girlさん、早速の回答ありがとうございます。 実は私もLineメソッドで無理やり矢印を作って「らしい」ものを作って見たん ですが、ちょっと問題が出てしまったのです。 PictureBoxにImageを部分的に貼り付けているのですが、 そうするとLine(矢印)がImageの後ろに隠れてしまうのです。 最前面からLine(矢印)、Image、PictureBoxの順にしたいのですが、 現状Lineメソッドで記述しているため、Imageが最前面に来てしまいます。 なんとか、克服する手段はないでしょうか? (できれば、コーディングが少なくてすみそうなArrowコントロール みたいなのがあるといいなぁ・・なんて) お知恵をお貸しください。