none
VB2010 で ラジアンで円弧を描きたいのですが RRS feed

  • 質問

  • 以前 VB6で ラジアンで円弧を描くのに成功したのですが、VB2010では描けません。色々調べたのですが

    「DrawCircularArc メソッド

    新しい図形を作成し、中心、半径、始点角度、および終点角度によって定義される円弧で図形のパスを構成します。

    objRet = object.DrawCircularArc(xCenter, yCenter, Radius, [StartAngle], [EndAngle])

    objRet     新しい Shape オブジェクトです。」  ・・・・とか

    「 Public Sub DrawCircularArc_Example

       Dim vsoShape As Shape
        Set vsoShape = ActivePage.DrawCircularArc(3, 3, 3)

    End Sub  」

    ・・・と このような例を見つけたのですがやはりエラーになります。

    VB6 で

    Picture1.Circle (2000, 3500), h, , -startAngle * pi / 180, -endAngle * pi / 180

    を VB2010ではどのように書けばいいのでしょうか

    2010年7月11日 12:37

回答

  • >円弧を描くのに中心が時計のように同じ所で、角度も同じで、円弧のサイズだけが
    >違うものをVB2010で作りたいと思っています。長くなってすみません。

    VB2010で中心を指定して円弧を描画するクラスはおそらくないと思います。

    中心と直径がわかれば計算で円に外接する四角形のRectangle構造体を求めればよいのではないでしょうか。

    プログラムを全面的に書き換えるのが面倒であれば,互換性のあるCircleメソッドを作成すればよいと思います。

    • 回答の候補に設定 山本春海 2010年7月23日 2:41
    • 回答としてマーク 山本春海 2010年7月28日 5:23
    2010年7月18日 14:36

すべての返信

  • Graphics クラスの DrawArc メソッドあたりでしょうか。
    Graphics クラスを使う方法については別途調べてみてください。
    http://msdn.microsoft.com/ja-jp/library/ms142028.aspx

    なお、ActivePage などと書かれている例は、Office の話ではないでしょうか。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2010年7月11日 14:44
    モデレータ
  • 早速の回答有難うございました。
    私がラジアンで円弧を描きたいと思ったのは、以前VB6でうまくいったからなのですが、
    最終的にはDFXで保存して、CADで利用したいと思っています。教えていただいたのは、
    四角からrを取る方法のようですが、これから勉強してみたいと思います。
    2010年7月12日 11:21
  • DrawArcはラジアンではなく,度単位の角度で指定します。

    PictureBoxに半円を描くなら次のようになります。

            Dim g As Graphics = Me.PictureBox1.CreateGraphics()
            Dim StartAngle As Single = 0
            Dim EndAngle As Single = 180
            g.DrawArc(Pens.Black, 0, 0, 100, 100, StartAngle, EndAngle - StartAngle)

     

    2010年7月12日 13:16
  • ごめんなさい,Graphicsは使うたびにDisposeするべきでした。

            Using g As Graphics = Me.PictureBox1.CreateGraphics()
                Dim StartAngle As Single = 0
                Dim EndAngle As Single = 180
                g.DrawArc(Pens.Black, 0, 0, 100, 100, StartAngle, EndAngle - StartAngle)
            End Using

    2010年7月12日 13:18
  • 回答頂いていたのに返事が遅くなってしまって申し訳ありません。有難うございました。
    私の質問の仕方が、(以前VB6で余りにも簡単に出来たので)全く説明不足でした。
    私の作りたいのは、例えば、バケツ(水を入れるバケツです)を作る前の、平面図です。
    VB6で作ったときは、
    円弧を大(バケツの口)小(底)と2つ描き、深さも指定すると言うものです。

    Dim startAngle As Double
    Dim endAngle As Double
    Const pi = 3.1459265

    '角度の初期値
    startAngle = 0.1
    endAngle = startAngle + y

    '円弧小の描画
    Picture1.Circle (2000, 3500), 小の直径, , -startAngle * pi / 180, -endAngle * pi / 180

    '円弧大の描画
    Picture1.Circle (2000, 3500), 大の直径, , -startAngle * pi / 180, -endAngle * pi / 180

    他に計算式とか諸々ありますが、これで、text に作りたいバケツの、例えば
    口 30pi, 底 20pi, 深さ 25センチ と記入すると PictureBoxに平面図が描かれ
    これを切り抜いて丸めれば上の寸法のバケツが出来るというものです。

    円弧を描くのに中心が時計のように同じ所で、角度も同じで、円弧のサイズだけが
    違うものをVB2010で作りたいと思っています。長くなってすみません。

    2010年7月18日 8:52
  • >円弧を描くのに中心が時計のように同じ所で、角度も同じで、円弧のサイズだけが
    >違うものをVB2010で作りたいと思っています。長くなってすみません。

    VB2010で中心を指定して円弧を描画するクラスはおそらくないと思います。

    中心と直径がわかれば計算で円に外接する四角形のRectangle構造体を求めればよいのではないでしょうか。

    プログラムを全面的に書き換えるのが面倒であれば,互換性のあるCircleメソッドを作成すればよいと思います。

    • 回答の候補に設定 山本春海 2010年7月23日 2:41
    • 回答としてマーク 山本春海 2010年7月28日 5:23
    2010年7月18日 14:36
  • ちょっと不思議に思ったのですが、古い?VB6で簡単に出来たものが、最新のVB2010でこんなにも難しい。

    新しい方が便利で使いやすいと想ったのですが、私の使い方、考え方が間違えているのでしょうかね....。

    これから早速教えていただいたのをトライしてみます。

    有難うございました。

     

    2010年7月18日 22:51
  • >ちょっと不思議に思ったのですが、古い?VB6で簡単に出来たものが、最新のVB2010でこんなにも難しい。

    >新しい方が便利で使いやすいと想ったのですが、私の使い方、考え方が間違えているのでしょうかね....。

    新しい方が便利で使いやすくなっているんです。ただ,できることが飛躍的に増えているので,VB6よりも複雑になり,しかもVB6と互換性がほとんどありません。それでもある程度以上の規模のプログラムを書こうとすると,VB2010の方がはるかに簡単に書くことができます。難しく感じるのはおそらくそのある程度以上の規模のプログラムを書く際に便利な流儀を小さなプログラムでも強要されるからだと思います。VB2010を使うにはVB6ではあまり重要でなかった「クラス」というものの理解が必須だと思います。

    確かに「VB6と完全上位互換だったら良かったのに」の考えは10年くらい前にVB.NETが出たときに多くの人が思いましたが.....

    主観ですが,VB6とVB2010を比べるならば,電卓とEXCELくらいの違いがあると思います。(ただ,事務のおばちゃんは電卓の方が「便利で使いやすい」と言うかもしれませんが...)

    まとまらなくて,申し訳ありません。

    2010年7月19日 0:07
  • なるほど仰る通りですね、とても解りやすいです。便利さがわかるまでがんばってみようと思います。目が覚めた感じです。
    有難うございます。
    2010年7月20日 13:50
  • こんにちは、イツモ さん。

    フォーラム オペレーターの山本です。

    YAS.s さんからの情報が参考になったようですので、私のほうで勝手ながら回答としてマークさせていただきました。
    投稿くださったみなさんも、情報ありがとうございます。
    有効な情報や参考になった情報には、回答としてマークすることで、今後同じ問題でこのスレッドを参照される方の目にとまりやすくなるかと思いますので、回答としてマークすることをお願いしています。
    イツモ さん、今後とも、MSDN フォーラムのご利用をよろしくお願いいたしますね。それでは。
                                             
    マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2010年7月28日 5:32
  • この所都合で手がつけられなかったのですが、昨日、一日がかりで想い通りのもの(2番目の質問のバケツの平面図)を作ることが出来ました。コードも案外シンプルなのもでした。

    またやりたい事も浮かんできました、トライしたいと思います。

    いろいろ有難うございました。それから、大変遅くなってしまって申し訳ありませんでした。

    2010年7月31日 23:43
  • こんにちは、山本さん

    この所いろいろと都合がありまして、何も出来なくて時間だけが過ぎてしまいました。

    昨日、やっと思っていたものが完成し、YAS.sさんに返事を出そうと思ったら山本さんからのメッセージが入っていて驚きました。

    今後は、こんな事の無い様に注意したいと思います。申し訳ありませんでした。

    投稿していただいたみなさんに感謝しています。また、宜しくお願いします。

        イツモ

    2010年8月1日 4:58