- ベストアンサー
VBのShapeコントロールを使用して,円を描く方法を教えてください
いつもお世話になっています。 VB6のシェイプ (Shape) コントロール(長方形、丸等)を使用して、 陸上競技場のトラックのような横長な円を描きたいのですが、 Shapeの丸と長方形を組み合わせると、トラック内に線が引かれる (丸の中央部分の線と長方形の縦線が引かれる)ので、 この線を消したいのですが、どなたか良い方法がありましたら 教えてください。 [開発環境] OS:WindowsXP/Pro SP3 VB:VB6 よろしくお願いします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (8)
- uruz
- ベストアンサー率49% (417/840)
(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
お礼
uruzさん ありがとうございます。 Lineで試してみたらOKでした。 あと、ダミーの円を配置して同色で塗りつぶしてみたりして トラック内の線を綺麗に消すことができました。
- myRange
- ベストアンサー率71% (339/472)
またまたまた登場、myRangeです。 >トラックの幅(横)が可変値(人が値入力するため可変) >という事を書き忘れていました。 大事なことを小出しにしてはいけませんねぇ。。(^^;;; >トラックの幅を短くしたときに >今まで隠れていた丸半分の一部が見えて 四角形の幅を変更(短くor長く)した時には、 それに応じて関係する他のShapeも変更しなければ拙いですよね。 それはやってますか? ただ、それでもまだ不明な点があります。 何の為にこうこうものを作成するのか、実際に即した流れを説明した方がいいでしょう。 例えば、 ●先ず、質問者が、円(楕円)が2つ、四角形が2つ(うちダミー四角形が1つ)のShapeで、余計な線を消した、トラック図形を作成しておく ●次に、TextBoxに、最初の四角形の幅を入力しその値で、トラックの図形を変更する それから、四角形の幅ではなく、高さの変更もありそうですが、、、 などのようなことが分かると回答しやすいですね。 また、質問者の現在のコードもアップした方がいいでしょう。 以上です。
お礼
myRangeさんへ 度々すみません。 どうもあせってしまって、大事な部分が抜けていたりして、反省します。 四角形の幅を変更(短くor長く)した時には、・・・ですが、 長方形のShapeも変更をしています。 Shapeの円x2つと長方形x1つでトラックを作り、この表示されている 円と長方形から微妙にずらした(計算して位置決めをした)ダミーの 円2つと長方形1つを配置することでトラック内の線を消すことができました。 myRangeの言うとおり、縦バージョンも作ってみまして、綺麗にトラック内の線が消えました。 これからは、もう少し質問内容を考えてから質問するようにします。 色々とありがとうございました。 では、失礼します。
- myRange
- ベストアンサー率71% (339/472)
またまた登場、myRangeです。 まだ意味が掴みかねます。(^^;;; 問題を整理してみましょう。 質問は、Shapeの四角形と円(楕円)でトラックを作ったが 内部に余計な"縦線と内側の丸半分"があるのでそれを消したい、 ということでしたね。 で、 >ダミーの四角で"縦線と内側の丸半分"は消えたんですが、 このようにダミーの四角形で、余分な線を消すことができたわけですから 質問は解決したと思うのですが。。。。 にも拘わらず、 >中央の四角(横の長さ)が短くなると、内側の丸半分の一部が >ダミーの四角からはみ出して見えてしまします。 なぜ、完成形から更に、四角形の幅を変えたりするのでしょうか。 当方がアップした画像が最終形ではないのですか? 何をやりたいのかも一度詳しく補足した方がいいと思われます。 以上です。
お礼
myRangeさん 説明が悪くてすみません。 myRangeさんの教えていただいたとおり、 トラック図形を描くことができましたが、 トラックの幅(横)が可変値(人が値入力するため可変) という事を書き忘れていました。 すみません。 ですので、トラックの幅を短くしたときに 今まで隠れていた丸半分の一部が見えて しまっているという状況です。
- tom11
- ベストアンサー率53% (134/251)
>[開発環境] OS:WindowsXP/Pro SP3 この環境で、なぜ、最新版のVBを使わないんですか どうしても、仕事で,VB6を使わないといけないとか 学校の指定とか、(学校なら、net使うかな??) 使わないといけない理由が、あるのですか??? CPUのスペックの低いパソコンに、XPを 入れているのですか?? netだと、描画も塗りつぶしも、 参考資料が、沢山、netに転がっているのですが。 因みに、net のexpress版なら、無料ですよ。
お礼
tom11さん パソコン一式は先輩から引き継いだお古で、 プログラムも以前に作ったもので、これを変更して しますので、XP&VB6を使っています。
- uruz
- ベストアンサー率49% (417/840)
(Shape)コントロールを使用するのではなく Circle と Line メソッドを使用して描画するのはダメなのでしょうか?
お礼
uruzさんへ ご回答いただき、ありがとうございます。 Circle と Line メソッドっていうのがあるんですね。 無知ですみません。 トラックの中身を塗りつぶしたいのですが、 Circle と Line を使用した場合でも、 塗りつぶせますか?
- myRange
- ベストアンサー率71% (339/472)
回答2、myrangeです。 >四角の横の長さを短くしていくと、反対側の円が塗りつぶした >四角形からはみ出てしまいました。 ちょと意味がわかりかねます。(^^;;; で、画像を添付しました。 添付画像のイメージでいいのですか?
- myRange
- ベストアンサー率71% (339/472)
隠したい線の上に、 UserFormと同色で塗りつぶした四角形を重ねてみるのはどうでしょう。 以上です。
お礼
myRangeさん ありがとうございます。 myRangeさんの言うとおり四角形を重ねて塗りつぶしてみたら、 トラック内の余分な線が消えましたんですが、 四角の横の長さを短くしていくと、反対側の円が塗りつぶした 四角形からはみ出てしまいました。 何か良い方法がありましたら、教えてください。
- samtomsan
- ベストアンサー率55% (1060/1897)
お礼
myRangeさんへ ありがとうございます。 私の説明が悪くてすみません。 myRangeさんが載せていただいた画像のとおりです。 縦線と内側の丸半分を消したいのですが、 ダミーの四角で"縦線と内側の丸半分"は消えたんですが、 中央の四角(横の長さ)が短くなると、内側の丸半分の一部が ダミーの四角からはみ出して見えてしまします。 何か良い方法はないでしょうか?