• ベストアンサー

曲線の描画方法

VB2005でプログラミングをしています。 目標としては、曲線を描画して、更にその曲線をドラッグなどができるようにしようとしています。 ピクチャーボックスに曲線を描くのはDrawCurveでできましたがこれでは曲線の移動などはできないので、別の方法を探しています。 調べているとLineShapeというコントロールがあることを知り、曲線は無理でもこのLineShapeで作った直線のコントロールをグループ化して折れ線のようにし、さらにグループ化した折れ線をドラッグなどの処理が行えるようにできないかと模索しています。このような処理は可能でしょうか? 一応、LineShapeを繋ぎ合わせて折れ線はできましたが、マウスカーソルをこのコントロールの上に持っていくとやはり直線一本一本がバラバラでしか認識できません。マウスカーソルを持っていったときに折れ線として認識できるようにしたいのですが、いい案はないでしょうか?ご教授お願いいたしますm(_ _)m

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

UserControlを使ってShapeContainerを上手に使えば出来そうですよ UserControlをプロジェクトに追加 1) メンバーに ShapeContainer型のオブジェクトを追加 2) 1)の Shapes.Add で LineShape を追加 3) 1)のPaintイベントなどで LineShapeのClickイベントを登録 4) 3)で登録したイベントで LineShapeのBorderColorを変えるとか # 標準コントロールでないものはその出展を明示しましょう # VS2005 PowerPacks 2.0/3.0のコンポーネント など ・・・

vandread
質問者

お礼

あ、パワーパックスの件書き忘れていました・・・申し訳ありませんm(_ _)m 少し難しそうですが、そのような方法もあるのですね!!試してみます。ありがとうございました。

その他の回答 (1)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

DrawCurveを使う方法では、下のリンクで同様の質問から回答されていらっしゃいます。 VBでの回答例ではないですが、問題なく読めるレベルだと思われます。 ペンの幅を太くしてやれば、域値にも対応できそうですね。

参考URL:
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=777117&SiteID=7
vandread
質問者

お礼

回答していただきありがとうございます^^ なるほど、そのような方法があるとは思いつきませんでした!! 早速試してみます。

関連するQ&A

  • VBを用いた対話型図形処理

    VB6で以下のような簡単な図形を扱うプログラムを作りたいのです。どこからとっかかればいいか教えてください。VBの経験は長いのですが図形処理は初めてです。 (1)描かれた線の上にマウスカーソルを置くと、線の長さを表示する。 (2)描画枠の隅にカーソルを持って行くと、カーソルの形が変わって、それをドラッグすると描画枠が変形する。(描画図形を拡大/縮小したい)

  • マウスカーソルのデスクトップ描画について

    vb2008で現在のマウスカーソルのハンドルを取得し、デスクトップに描画するというプログラムを組んでいます。しかし、以下の部分を実行してもマウスカーソルは描画されません。どこがおかしいのでしょうか? Dim hcur As Long Dim hdc As Long 'マウスカーソルのハンドル取得 hcur = GetCursor() 'デスクトップのデバイスコンテキスト取得 hdc = GetDC(GetDesktopWindow()) 'カーソル描画 DrawIcon(hdc,0,0,hcur) ちなみに同名のAPIの宣言はしてあります。 後,このソースの用途ですが,複数マウスに対応した複数カーソルの表示です。もしそれにあたって別の方法でカーソルを表示すべきなどのご指摘がありましたら,それもよろしくお願いします。

  • ピクチャボックスに描画した画像の保存

    VB6.0にて、 http://www.uploda.org/uporg898462.jpg このようなものを作成しました。 折れ線グラフはプログラムにて後から描画したもの、 それ以外の目盛りなどは最初からピクチャボックスに描画してあるものです。 pic1,pic2は共にピクチャボックスです。 赤い線で囲まれたpic1を目盛り、グラフ、その他のテキストボックスや文字と共に画像として保存したいのですが、 SavePicture Pic1.Image, "C:\SaveTest2.bmp" とすると、pic1の大きさの、何も描画されていない真っ白な画像が保存されてしまいます。 また、SavePicture Pic2.Image, "C:\SaveTest2.bmp" (pic2の保存) とすると、折れ線グラフのみが描画され、目盛りは無くなった画像が保存されてしまいます。 2つのピクチャ共にAutoRedraw=Trueを設定しています。 pic1を上手く保存する方法は無いでしょうか? ご教授、お願いします。

  • VB .net Panelコントロールにライン描画は可能ですか?

    VB 6.0 から.netへとアップグレードした際に、 PictureBox が Panelへと変換されてしまいました。 .netにもPictureBoxは存在するのになぜPanelにおきかわってしまったのかは不明ですが(VB6.0ではPictureBox内にLineコントロールもありグループ化みたいなことをしていた模様なのでそのためか?) 現在、PictureBoxにライン描画できることは確認したのですが、Panelコントロールにはライン描画はできないのでしょうか?ご存知の方がいましたら回答をお願いします。

  • 画面に描画した場合の深度はどのように

    こんにちわ。Flash8を使っています。 今回,Flashで地図(クリックするとその地点が中心へ移動)と地図上に 線を描画できるように考えてみようと思い,作成しております。 今は,線の描画と地図の移動をメインに作成しております。 地図は,マスクを使い必要な場所だけを表示させています。 さらに画面上でマウスが矢印のカーソルの場合,ドラッグで直線を描画できるようなものを作成しました。 ここで質問なのですが,自分で描画した線が地図の後ろへ隠れてしまいます。 swapDepth()の設定ではどうにもならないようで困ってます。 実際には,下記のアドレスのようなものを作成しております。 具体的なActionScriptをここに記載はしておらず大変恐縮なのですが, 対応に関する概念や策などをご存知の方,教えてください。 よろしくお願いいたします。 http://rec.main.jp/flash_test/map_test.html

    • ベストアンサー
    • Flash
  • CStaticコントロールの静的イメージ描画

    はじめまして、質問させてください。 VC++ 2005 MFC で開発しております。 Picture Control(DDX CStasic型)に イメージ(外部ファイル JPG)を静的に描画させたいのですが 方法がわかりません。 お詳しい方がおられましたら、ご教授お願いいたします。 ちなみに CImageを使用して描画はできるのですが その場合、OnPaintをオーバーライドして 描画更新処理を書かないと一度だけ描画されて終わって しまうと思います。 CStaic変数にロードしたら 再度ロードされるまで ずっと描画させていたいです。 以上になります。 宜しくお願いいたします。

  • LineToやMoveToにて描画した線を削除するにはどうの様な手法が

    LineToやMoveToにて描画した線を削除するにはどうの様な手法がようろしいでしょうか。 目的:画面に描画されている要素の移動 マウスの動作に合わせて常に再描画をかけています。再描画処理の現状は画面全体を一度塗りつぶし、 線を描画しています。 この手法で画面のちらつきがひどいので他の手法を模索しています。

  • VB6で直前の操作を取り消す方法

    VB6を使ってフリーハンドで「ピクチャ」コントロールに描画をするアプリケーションソフトを作成中ですが、間違って描画した直前の線だけを取り消したいのですが、Excelで使用できる「戻る」ボタンや「やり直し」のようなボタンを作成できないでしょうか?

  • VB6でベクター矢印描画

    VB6で日曜プログラミングをしているものです。 パワーポイントのオートシェイプの線のような具合で 矢印をPictureBox内で扱いたいのですが、そのようなコントロールなど ご存知の方いらっしゃいましたらご教示お願いできませんでしょうか? イメージとしては、PicutreBox内でクリックすると矢印描画開始、 もう一回クリックして確定。 矢印の上でクリックすると、矢印にフォーカスが当たる(頭と尻尾に○が表示?)。 確定後はドラッグアンドドロップが可能で矢印の先端をドラッグアンドドロップ することで、矢印の長さ、傾きの調整が可能。 みたいなものをイメージしています(まんまパワポのオートシェイプ) お力お貸しください。

  • ビットマップに描画をしてピクチャーコントロールに貼り付けるためには?

    ビットマップに描画をしてピクチャーコントロールに貼り付けるためには どうすればよいでしょうか? ネットで検索しましたそして、 下のようなコードを書きましたがうまくゆきません。 void CXXXView::OnButton() { CStatic m_ctlImage; // ピクチャーボックスに関連付けした変数 CBitmap m_bmpImage; // ピクチャーボックスに貼り付けるイメージ CDC m_dcImage; // Bitmap描画用のDC CDC* pDC = m_ctlImage.GetDC(); m_dcImage.CreateCompatibleDC(pDC); CRect Cltsz; picture1.GetClientRect(&Cltsz); m_bmpImage.CreateCompatibleBitmap(pDC,Cltsz.Width(),Cltsz.Height()); CBitmap* pOld=m_dcImage.SelectObject(&m_bmpImage); CPen myPEN(PS_SOLID,5,RGB(0,0,255)); CPen* oldPEN=m_dcImage.SelectObject(&myPEN); m_dcImage.MoveTo(10,10); m_dcImage.LineTo(100,100); m_dcImage.SelectObject(oldPEN); m_dcImage.SelectObject(pOld); m_ctlImage.SetBitmap(m_bmpImage); } この様にしましたが、ピクチャーコントロールには 何も描画されません、 何故でしょうか? VS2005で、ボタンをクリックした イベントで描画する場合です、 直線とかは、問題なく描画できました。 ビットマップに描画して貼り付けたいのです、 よろしくお願いします