• ベストアンサー

VBのShapeコントロールを使用して,円を描く方法を教えてください

いつもお世話になっています。 VB6のシェイプ (Shape) コントロール(長方形、丸等)を使用して、 陸上競技場のトラックのような横長な円を描きたいのですが、 Shapeの丸と長方形を組み合わせると、トラック内に線が引かれる (丸の中央部分の線と長方形の縦線が引かれる)ので、 この線を消したいのですが、どなたか良い方法がありましたら 教えてください。 [開発環境] OS:WindowsXP/Pro SP3 VB:VB6 よろしくお願いします。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.4

画像が添付されませんねぃ。画像添付は初めてなので失敗したかも。(^^;;; で、もう一度。

riechan_91
質問者

お礼

myRangeさんへ ありがとうございます。 私の説明が悪くてすみません。 myRangeさんが載せていただいた画像のとおりです。 縦線と内側の丸半分を消したいのですが、 ダミーの四角で"縦線と内側の丸半分"は消えたんですが、 中央の四角(横の長さ)が短くなると、内側の丸半分の一部が ダミーの四角からはみ出して見えてしまします。 何か良い方法はないでしょうか?

その他の回答 (8)

  • uruz
  • ベストアンサー率49% (417/840)
回答No.9

(Shape)コントロールを4個で構成するより (Line)コントロールを2個で構成する方が楽なようです 2つの(Line)コントロール重ね下面が縁の色、上面が内部塗りつぶし色です トラック形状の高さはDrawWidthプロパティーで 幅はX1、X2プロパティーで決定します 幅の変更は各LineのX2プロパティーのみですみます --------------------------------------- 添付画像の設定 (FormのScaleModeはピクセルに設定されています) ●Line1 (下面) DrawWidth=52 X1=50 X2=200 Y1=50 Y2=50 ●Line2 (上面) DrawWidth=50 X1=50 X2=200 Y1=50 Y2=50

riechan_91
質問者

お礼

uruzさん ありがとうございます。 Lineで試してみたらOKでした。 あと、ダミーの円を配置して同色で塗りつぶしてみたりして トラック内の線を綺麗に消すことができました。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.8

またまたまた登場、myRangeです。 >トラックの幅(横)が可変値(人が値入力するため可変) >という事を書き忘れていました。 大事なことを小出しにしてはいけませんねぇ。。(^^;;; >トラックの幅を短くしたときに >今まで隠れていた丸半分の一部が見えて 四角形の幅を変更(短くor長く)した時には、 それに応じて関係する他のShapeも変更しなければ拙いですよね。 それはやってますか? ただ、それでもまだ不明な点があります。 何の為にこうこうものを作成するのか、実際に即した流れを説明した方がいいでしょう。 例えば、 ●先ず、質問者が、円(楕円)が2つ、四角形が2つ(うちダミー四角形が1つ)のShapeで、余計な線を消した、トラック図形を作成しておく ●次に、TextBoxに、最初の四角形の幅を入力しその値で、トラックの図形を変更する それから、四角形の幅ではなく、高さの変更もありそうですが、、、 などのようなことが分かると回答しやすいですね。 また、質問者の現在のコードもアップした方がいいでしょう。 以上です。  

riechan_91
質問者

お礼

myRangeさんへ 度々すみません。 どうもあせってしまって、大事な部分が抜けていたりして、反省します。 四角形の幅を変更(短くor長く)した時には、・・・ですが、 長方形のShapeも変更をしています。 Shapeの円x2つと長方形x1つでトラックを作り、この表示されている 円と長方形から微妙にずらした(計算して位置決めをした)ダミーの 円2つと長方形1つを配置することでトラック内の線を消すことができました。 myRangeの言うとおり、縦バージョンも作ってみまして、綺麗にトラック内の線が消えました。 これからは、もう少し質問内容を考えてから質問するようにします。 色々とありがとうございました。 では、失礼します。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.7

またまた登場、myRangeです。 まだ意味が掴みかねます。(^^;;; 問題を整理してみましょう。 質問は、Shapeの四角形と円(楕円)でトラックを作ったが 内部に余計な"縦線と内側の丸半分"があるのでそれを消したい、 ということでしたね。 で、 >ダミーの四角で"縦線と内側の丸半分"は消えたんですが、 このようにダミーの四角形で、余分な線を消すことができたわけですから 質問は解決したと思うのですが。。。。 にも拘わらず、 >中央の四角(横の長さ)が短くなると、内側の丸半分の一部が >ダミーの四角からはみ出して見えてしまします。 なぜ、完成形から更に、四角形の幅を変えたりするのでしょうか。 当方がアップした画像が最終形ではないのですか?  何をやりたいのかも一度詳しく補足した方がいいと思われます。 以上です。  

riechan_91
質問者

お礼

myRangeさん 説明が悪くてすみません。 myRangeさんの教えていただいたとおり、 トラック図形を描くことができましたが、 トラックの幅(横)が可変値(人が値入力するため可変) という事を書き忘れていました。 すみません。 ですので、トラックの幅を短くしたときに 今まで隠れていた丸半分の一部が見えて しまっているという状況です。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.6

>[開発環境] OS:WindowsXP/Pro SP3 この環境で、なぜ、最新版のVBを使わないんですか どうしても、仕事で,VB6を使わないといけないとか 学校の指定とか、(学校なら、net使うかな??) 使わないといけない理由が、あるのですか??? CPUのスペックの低いパソコンに、XPを 入れているのですか?? netだと、描画も塗りつぶしも、 参考資料が、沢山、netに転がっているのですが。 因みに、net のexpress版なら、無料ですよ。

riechan_91
質問者

お礼

tom11さん パソコン一式は先輩から引き継いだお古で、 プログラムも以前に作ったもので、これを変更して しますので、XP&VB6を使っています。

  • uruz
  • ベストアンサー率49% (417/840)
回答No.5

(Shape)コントロールを使用するのではなく Circle と Line メソッドを使用して描画するのはダメなのでしょうか?

riechan_91
質問者

お礼

uruzさんへ ご回答いただき、ありがとうございます。 Circle と Line メソッドっていうのがあるんですね。 無知ですみません。 トラックの中身を塗りつぶしたいのですが、 Circle と Line を使用した場合でも、 塗りつぶせますか?

  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

回答2、myrangeです。 >四角の横の長さを短くしていくと、反対側の円が塗りつぶした >四角形からはみ出てしまいました。 ちょと意味がわかりかねます。(^^;;; で、画像を添付しました。 添付画像のイメージでいいのですか?  

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

隠したい線の上に、 UserFormと同色で塗りつぶした四角形を重ねてみるのはどうでしょう。   以上です。  

riechan_91
質問者

お礼

myRangeさん ありがとうございます。 myRangeさんの言うとおり四角形を重ねて塗りつぶしてみたら、 トラック内の余分な線が消えましたんですが、 四角の横の長さを短くしていくと、反対側の円が塗りつぶした 四角形からはみ出てしまいました。 何か良い方法がありましたら、教えてください。

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

横長の円とは楕円のことでしょうか。 例えば Shape1.Top = 0 Shape1.Left = 0 Shape1.Height = 1000 Shape1.Width = 4000 Shape1.Shape = 2 Shape1.BorderColor = vbRed Shape1.Shape の値を 0~5で変えると、いろいろな図形になります。

riechan_91
質問者

お礼

samtomsanさん 回答いただき、ありがとうございます。 長円とは楕円ではなく、直線を上下に二本引き、 左右には半円がくっ付く形です。 競技場や競馬場や学校の校庭にあるトラックような(小判のような)形です。

関連するQ&A

  • フォームサイズ変更時のコントロール位置について

    OS:WindowsXP Pro SP2 VB:6.0 SP6 はじめまして。 VBで開発を行っているのですが フォームのサイズ変更をした時、コントロールの位置に困っています。 最大化した時などは端にコントロールが寄ってしまい見た目が大変悪いです。 フォームサイズの変更時にコントロールも任意の位置に移動する方法はどのようにすれば良いのでしょうか? ご存知の方ご教示宜しくお願いいたします。

  • エクセル マクロ オートシェイプ 縦線

    エクセルのマクロで,以下の条件でオートシェイプの縦線を引きたいと思っています。 条件(1) 縦線を引く範囲は,セルを選択している範囲(任意)の中央を通るようにしたいです。 条件(2) 縦線の太さは一番細い線,色は赤色です。 なお,条件(2)の線の太さ,線の色は,マクロのどの部分を変更すればよいのかもご教授いただけるとありがたいです。 どうぞよろしくお願いいたします。

  • VBでペイントのように円を描く方法は?

    WindowsXP,VB6,SP5で開発しています。 PictureBoxに円を描きたいのですが、できずに困っています。 詳しく説明すると、最初にクリックした点からドラッグした時に、 点線で円を表示させて、最後にクリックボタンを離した時に実線にしたいんです。 何か良い方法はありませんでしょうか? どうぞ、よろしくお願いしますm(_ _)m

  • VB6.0のデザイン時 コントロールの移動 Vista

    プログラマです。 VB6.0のデザイン時に配置されたコントロールを矢印キーで移動しようとすると、 他のコントロールにフォーカスがうつってしまい配置を変更できません。 (現在はマウスで配置を移動させています) デザイン時に矢印キーでコントロールの配置位置を移動させる設定などありますか? 開発環境 -VB6.0(SP6) -OS Windows Vista Business SP1

  • リターンでコントロールを移動

    VB5の時は気にもしていなかったのですが、VB6だとリターンでコントロール(たとえばTEXT BOX)の移動ができません。 TABでは移動できるのですが、どこで設定するといいのでしょうか? Windows2000Pro SP4 VB6 SP5 です。 よろしくお願いします。

  • フォーカスのあるコントロール

    こんにちわ。 いまVB6.0 SP5で開発しています。 ソースをステップ実行しながら, その都度,どのコントロールにフォーカスがあたっているかを 参照するコマンド,メソッドはありますか? 教えてください。

  • ActiveXコントロールの開発環境からのデバッグ方法

    VBで自作のActiveXコントロールを作成しました。 コンパイルして生成されたabcd.ocxを 自作のtest.htmファイル内に指定して、ActiveXコントロールから test.htmlに記述されたJavaScriptを制御します。 開発環境の実行を行わなわずに、test.htmをIEで表示させると、 ActiveXコントロールがダウンロードされ(すでにローカルにありますが)JavaScriptを実行することはできます。 やりたいのは、開発環境から実行させて、JavaScriptを動作させたのです。 どうすればいいのでしょうか? 環境は、VB6.0(SP5),IE5.5(SP1)です。

  • コントロールについての質問

    みなさんこんにちは。 WinNT(SP6)・VB6.0(SP5)の環境で開発を行っているのですが、以下のような現象が起きていて困っています。 ・一部のコントロールで、オブジェクト名を変えようとすると『このフォームにこれ以上のコントロールを作成できません。』というエラーメッセージが表示される ・新規にコントロールを追加しようとしても同様のメッセージが表示される どうしてもオブジェクト名が変えられなくて困っています。ちなみにコントロールの数は数え切れないほどあり(少なくても100個以上)、その辺に問題があるのかとも思いますが・・。 どんな情報でもいいので、どなたか教えていただけませんか?よろしくお願いします。

  • VBからSQLServer2005のデータベースを最適化するには?

    WindowsXP,VB6.0.SP6にて開発しております。 タイトルの通りですが、SQLServer2005のデータベースを最適化したいのです。 色々調べましたところ、ACCESSでの最適化は見つかるのですが、 SQLサーバーでのやり方が見つかりませんでした。 どうか、ご存知の方いらっしゃいましたら、 ご教授よろしくお願いしますm(_ _)m

  • VB6の開発環境の設定の仕方がわかりません

    過去に誰かが作ったVBのシステムを修正しようと思っております。 修正の為にまず開発環境を整えなければならないのですが、前製作者が書き残したメモの内容が理解できません。 どなたか教えていただけませんでしょうか? メモの内容は以下のとおりです。 --------------------------------------------- 1) mpscmp.dll、phrcmp.dllは ActiveX DLL 開発環境にインストールすること 2) Fsrtmov.ocxは ActiveXコントロール 開発環境にインストールすること 3) PhTrans.dllはWin32DLL 開発環境のカレントや環境変数のパスの通っているとこに置くこと 4)開発環境 Win2000Pro+SP1 IE5+SP1 VB6+SP3 PowerTools ActiveReport ver1.5J + 最終パッチ PowerTools DBGrid Pro ver6.0J + 最終パッチ (現GrapeCity社) --------------------------------------------- mpscmp.dll、phrcmp.dll、Fsrtmov.ocx、PhTrans.dllといったファイルは手元にあるのですが、具体的にどこに設置すればいいのかというのがわかりません。 VBが置いてある場所に設置するということでしょうか? VBについて詳しく無いため質問の内容がわかりずらいと思いますが、どうぞよろしくお願いします。

専門家に質問してみよう