• ベストアンサー

マウスドラッグで四角形を表示するには

WinXPでVisual Basic 6.0をもちいてアプリケーションを作っています。 Formオブジェクトのデザインのときに、マウスを左クリックしてドラッグすると破線の四角形が表示されますよね。 あれと同じようなものを作成するアプリに実装したいと思っているのですが、どのようにしたら良いでしょうか。 MouseDownとMouseMoveを用いてやってみたのですが、これではForm上が四角ばかりになってしまいました。 良い方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>回答ありがとうございます。質問文では分りにくかったかもしれませんが、 >ドラッグ中に四角が表示されて、マウスボタンを離したときには四角形は消えてほしいのです。 いえいえ、しっかり質問内容は認識はしていたんですが、回答がわかりづらかったようで。ちょっとはしょりすぎましたね。 ようは、 MouseDown時で、 ・Lineを4本表示する。 MouseMoveがくる度に ・クリック時の座標とMouseMove時の座標を対角の頂点とする長方形を構成するように、Lineコントロールを移動させる。 MouseUp時で、 ・Lineを非表示にし、MouseDownとMouseUpの座標を対角の頂点とする長方形を描画する。 って感じで。 Lineコントロールを使うのは、線の移動が簡単に出来るからです。 あとは、WinAPIのDrawFocusRectを使うという手もあります。 こちらが実際にのExplorer等で使われているものです。

ash_ef
質問者

お礼

早速ありがとうございます。 今まではLineメソッドを使っていたのですが、Lineコントロールを使えばできるということですね。 これを用いて、PictureBoxに描かれたプロットに対して領域指定して拡大表示させるというのが目標です。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

一番簡単なのは、Lineコントロールを使うのかな? で、マウスボタンが離されたタイミングで長方形を実際に書いてあげれば楽かなぁ?

ash_ef
質問者

補足

回答ありがとうございます。質問文では分りにくかったかもしれませんが、ドラッグ中に四角が表示されて、マウスボタンを離したときには四角形は消えてほしいのです。エクスプローラなどで複数のアイコンを選択する時のような、ああいう四角形を望んでいます。

関連するQ&A

  • ドラッグ中の線の引き方について

    Visual C++ 2005 Express Edition、C++で作っています。 クリックした点からドラッグして放した点まで線を引きたいのですが、 点から点へ線を引くことはできるのですが、 ドロップ中の線の引き方がわかりません。 MouseDownで最初の点の座標を得て、 MouseUpで点と点をLineTo(hdc,e->X,e->Y);で結んでいます。 MouseMoveでLineToをしてしまうと沢山線が出てしまってうまくいきません。線を一回一回消せばいいと思ったのですがうまくいきません。また、前に書かれた線を消さないようにしたいです。 よろしくお願いします。

  • VB2008 Formドラッグ時の描画を早くしたいです..

     こんばんは,質問させていただきます. どうぞよろしくお願いたします.  Formが4つあるアプリを作成しております.いずれをドラッグされた際も これらが一緒に動くように,下のように方法でコーディングいたしました. が,コントロールの数が多いせいか,カクカク動いてしまいます.  (↓Form3をドラッグした際のコードでございます)   Private mousePoint As Point   Private Sub Form3_MouseDown(ByVal sender As Object, _     ByVal e As System.Windows.Forms.MouseEventArgs) _     Handles MyBase.MouseDown     If (e.Button And MouseButtons.Left) = MouseButtons.Left Then       mousePoint = New Point(e.X, e.Y) '位置を記憶     End If   End Sub   Private Sub Form3_MouseMove(ByVal sender As Object, _     ByVal e As System.Windows.Forms.MouseEventArgs) _     Handles MyBase.MouseMove 'マウスが動いたとき     If (e.Button And MouseButtons.Left) = MouseButtons.Left Then       Me.Left += e.X - mousePoint.X       Me.Top += e.Y - mousePoint.Y       Form1.Left += e.X - mousePoint.X       Form1.Top += e.Y - mousePoint.Y       Form2.Left += e.X - mousePoint.X       Form2.Top += e.Y - mousePoint.Y       Form4.Left += e.X - mousePoint.X       Form4.Top += e.Y - mousePoint.Y     End If   End Sub  VBでFormの動きを早くする方法というのは,単純にコントロール数を 減らすか,またはPCのスペックを上げるしか無いのでしょうか・・・?  もしお詳しい方がいらっしゃいましたら,是非とも何かアドバイスを いただきたくお願い申し上げます. どうぞよろしくお願いいたします.

  • 【VB.NET】マウスカーソルがどこにあってものXButton1&2を押されたらそれを知るには?

    こんばんは。 マウスカーソルがどこにあってものXButton1&2を押されたら知るにはどうしたら良いのでしょうか? 具体的にはFORMデザインでメニューバーやタブコントロールが張られてる状態で Private Sub Form1_MouseDown(ByVal sender As _ Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown     Select Case e.Button       Case MouseButtons.XButton1         '処理       Case MouseButtons.XButton2         '処理     End Select End Sub だとFORM上の何も無い所でしか受け付けてくれません。 マウスカーソルがメニューバーやタブコントロールの上にあってもプログラムがアクティブの状態ならXButton1&2が押されたら処理をさせたいのですがどうすれば良いのでしょうか?

  • マウスカーソルが四角く表示される

    色々キーワードを変えて検索してみましたがわからないので質問します。1年以上前からですが、XPを起動して1,2時間経つとマウスカーソルが大きな四角(縦横30ピクセルぐらいの■)になってしまいます。 コンソールパネルのマウスの設定をカスタマイズすることで、四角にならないもの(大きめのカーソル)と四角になるもの(標準サイズのカーソル)があることがわかりました。でも、Excelなどカスタマイズでも対応できないカーソルがあり、どうしても四角になってしまいます。 ちなみにほぼ全てのアプリ&サービスを停止して、IEだけまたはSleipnirだけ開いていても同じ症状になります。難しい問題だと思いますが解決法はあるでしょうか。よろしくお願いします。 WinXP XP2 Professional Edition マウス:ELECOM F-GUP2RRD 最新ドライバです http://www2.elecom.co.jp/products/M-FGUP2RRD.html

  • MouseDownとMouseMoveイベントで質問です。

    学校の課題の為VB6.0でマウスを使用したプログラムを作成しているのですが、 MouseDownイベントとMouseMoveイベントで解らないことがあるので、 知っているかた、お願いします。 マウスの右ボタンと左ボタンの区別をつけるにはどうしたらいいのでしょうか? 例えば「左の時は描画し、右の時は描画しない」と言う感じで… わからなくて困っています。ぜひ、お願いします。

  • オブジェクトを上下方向のみにドラッグさせる方法

    FLASH初心者です。オブジェクトを左右に動かさず、上下方向のみにマウスでドラッグさせるにはどういった方法があるでしょうか。 一応、自由にドラッグできるところまでは作れたのですが、移動方向を上下に限定させる事ができません。 使用ソフトはFlash Professional 8(WinXP)です。 よろしくお願いします。

  • HTML中で、javascript で接続線を描く

    excel で図形オブジェクトを 接続線で接続することが出来ます 下図の四角A、Bを動かしても 自動で着いていく接続線 ―――――         ――――― |     |        |     | |四角A |―――――|四角B | |     | 接続線  |     | ―――――        ――――― prototype,jquery 等のライブラリで、できるものはあると思いますが あくまで自分の勉強として使いたいので 具体的なコードがあるサイトを探しています ------------------------------ (DIVタグで四角A、Bは作成) 1.<button> などで接続線描ける状態にする、十字カーソル等 2.四角Aで、mousedown 3.mousemove で四角Bに、マウス移動 4.mouseup で、四角A、Bを接着する接続線を描く ------------------------------ 接続線はSVG のLINEなどを使いたいと思いますが 今回は勉強なので、接続線はHTMLのタグでもかまいません 四角の接続部分を認識して、別の四角の接続部分に 接続線を描く、コードを知りたいと思います このようなコードのサンプルページを知っている方 既に自分でjavascriptのコードを書いた方は 教えてください よろしく、お願いします

  • オブジェクトをドラッグできるソフトは?

    教員です。 授業でパワーポイントで教材作成して操作することがあります。パワポは残念ながら、生徒に見せる画面上でオブジェクトをドラッグで移動させる機能がありません。たとえば、手元のマウスの動きに合わせて、象を画面の上から下にリアルタイムで移動させ、説明後、今度は、左から右に動かす等できないです。任意の方向に任意のタイミングでドラッグしたいのです。アニメ機能の軌跡では、事前に動く方向を仕込んでおかないといけません。スライドショーを開始したら、動く方向やタイミングを変えられません。 アニメーション機能で、クリックしたら(1)見えなかったオブジェクトが出現、(2)オブジェクトが消えるの、有用な機能です。これらに(3)任意の方向に任意のタイミングでドラッグできる機能があればパワポをもっと活用できるのに、と思います。この3機能があるソフトが探しています。  アピール、フェード、オブジェクト移動(マウス操作からドラッグで移動)できる適当なソフトをご存じないでしょうか。FlashのAction Script を10年前にやりかけて身についてないのです。簡易Flash系の簡易フリーソフトか、初心者用のゲーム作成ソフトあたりに使えそうなのがあるのでしょうか。     Power Point< 探しているソフト < Adobe Flash 適当なのがなければ、Flashで頑張りますが、どなたか良いソフトがあればお教えください。

  • ファイルをDrag&Dropされている最中を知る

    こんにちは。 Win32でプログラムをしています。 DragAcceptFilesでTRUEを指定することでファイルがドラッグアンドドロップされたことを知ることができますが、ドラッグアンドドロップされようとしている最中を知ることはできないのでしょうか? エクスプローラからファイルをドラッグアンドドロップしようとして、マウスの左ボタンを放すまでのマウスの操作を知りたいのですが、WM_MOUSEMOVEは届いていないようです。 何か方法はないものでしょうか。

  • 【VC2008】色反転破線の書き方

    Visual C++ 2008で、イメージファイルの多分割アプリを作成しようとしています。 イメージファイルを、表示した上に色反転した破線を描画したいのですが、良い方法は無いでしょうか。色反転直線なら、DrawReversibleLine 。色反転破線四角なら、DrawReversibleFrame で書けるのですが、色反転した破線の直線の書き方がわかりません。 どなたか、ご教授頂けないでしょうか。

専門家に質問してみよう