dポイントプレゼントキャンペーン実施中!

いつもお世話になっています。

VB6のシェイプ (Shape) コントロール(長方形、丸等)を使用して、
陸上競技場のトラックのような横長な円を描きたいのですが、
Shapeの丸と長方形を組み合わせると、トラック内に線が引かれる
(丸の中央部分の線と長方形の縦線が引かれる)ので、
この線を消したいのですが、どなたか良い方法がありましたら
教えてください。

[開発環境]
OS:WindowsXP/Pro SP3
VB:VB6

よろしくお願いします。

A 回答 (9件)

画像が添付されませんねぃ。

画像添付は初めてなので失敗したかも。(^^;;;

で、もう一度。
「VBのShapeコントロールを使用して,」の回答画像4
    • good
    • 0
この回答へのお礼

myRangeさんへ

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

何か良い方法はないでしょうか?

お礼日時:2010/01/21 01:15

(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
「VBのShapeコントロールを使用して,」の回答画像9
    • good
    • 0
この回答へのお礼

uruzさん

ありがとうございます。

Lineで試してみたらOKでした。

あと、ダミーの円を配置して同色で塗りつぶしてみたりして

トラック内の線を綺麗に消すことができました。

お礼日時:2010/01/21 23:56

またまたまた登場、myRangeです。



>トラックの幅(横)が可変値(人が値入力するため可変)
>という事を書き忘れていました。

大事なことを小出しにしてはいけませんねぇ。。(^^;;;


>トラックの幅を短くしたときに
>今まで隠れていた丸半分の一部が見えて

四角形の幅を変更(短くor長く)した時には、
それに応じて関係する他のShapeも変更しなければ拙いですよね。
それはやってますか?


ただ、それでもまだ不明な点があります。
何の為にこうこうものを作成するのか、実際に即した流れを説明した方がいいでしょう。

例えば、

●先ず、質問者が、円(楕円)が2つ、四角形が2つ(うちダミー四角形が1つ)のShapeで、余計な線を消した、トラック図形を作成しておく
●次に、TextBoxに、最初の四角形の幅を入力しその値で、トラックの図形を変更する

それから、四角形の幅ではなく、高さの変更もありそうですが、、、

などのようなことが分かると回答しやすいですね。
また、質問者の現在のコードもアップした方がいいでしょう。
以上です。
 
    • good
    • 0
この回答へのお礼

myRangeさんへ

度々すみません。
どうもあせってしまって、大事な部分が抜けていたりして、反省します。
四角形の幅を変更(短くor長く)した時には、・・・ですが、
長方形のShapeも変更をしています。

Shapeの円x2つと長方形x1つでトラックを作り、この表示されている
円と長方形から微妙にずらした(計算して位置決めをした)ダミーの
円2つと長方形1つを配置することでトラック内の線を消すことができました。

myRangeの言うとおり、縦バージョンも作ってみまして、綺麗にトラック内の線が消えました。

これからは、もう少し質問内容を考えてから質問するようにします。
色々とありがとうございました。

では、失礼します。

お礼日時:2010/01/22 00:07

またまた登場、myRangeです。



まだ意味が掴みかねます。(^^;;;

問題を整理してみましょう。

質問は、Shapeの四角形と円(楕円)でトラックを作ったが
内部に余計な"縦線と内側の丸半分"があるのでそれを消したい、
ということでしたね。

で、
>ダミーの四角で"縦線と内側の丸半分"は消えたんですが、

このようにダミーの四角形で、余分な線を消すことができたわけですから
質問は解決したと思うのですが。。。。
にも拘わらず、

>中央の四角(横の長さ)が短くなると、内側の丸半分の一部が
>ダミーの四角からはみ出して見えてしまします。

なぜ、完成形から更に、四角形の幅を変えたりするのでしょうか。
当方がアップした画像が最終形ではないのですか? 

何をやりたいのかも一度詳しく補足した方がいいと思われます。
以上です。
 
    • good
    • 0
この回答へのお礼

myRangeさん

説明が悪くてすみません。

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

お礼日時:2010/01/21 16:15

>[開発環境]


OS:WindowsXP/Pro SP3

この環境で、なぜ、最新版のVBを使わないんですか
どうしても、仕事で,VB6を使わないといけないとか
学校の指定とか、(学校なら、net使うかな??)
使わないといけない理由が、あるのですか???

CPUのスペックの低いパソコンに、XPを
入れているのですか??


netだと、描画も塗りつぶしも、
参考資料が、沢山、netに転がっているのですが。

因みに、net のexpress版なら、無料ですよ。
    • good
    • 0
この回答へのお礼

tom11さん

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

お礼日時:2010/01/21 17:35

(Shape)コントロールを使用するのではなく


Circle と Line メソッドを使用して描画するのはダメなのでしょうか?
    • good
    • 0
この回答へのお礼

uruzさんへ

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

お礼日時:2010/01/21 01:43

回答2、myrangeです。



>四角の横の長さを短くしていくと、反対側の円が塗りつぶした
>四角形からはみ出てしまいました。

ちょと意味がわかりかねます。(^^;;;

で、画像を添付しました。
添付画像のイメージでいいのですか?
 
    • good
    • 0

隠したい線の上に、


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

 
    • good
    • 0
この回答へのお礼

myRangeさん

ありがとうございます。

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

何か良い方法がありましたら、教えてください。

お礼日時:2010/01/20 15:12

横長の円とは楕円のことでしょうか。


例えば
Shape1.Top = 0
Shape1.Left = 0
Shape1.Height = 1000
Shape1.Width = 4000
Shape1.Shape = 2
Shape1.BorderColor = vbRed

Shape1.Shape の値を 0~5で変えると、いろいろな図形になります。
「VBのShapeコントロールを使用して,」の回答画像1
    • good
    • 0
この回答へのお礼

samtomsanさん
回答いただき、ありがとうございます。

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

お礼日時:2010/01/20 10:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!