ピクチャボックスに線を引きたい

解決


  2007-02-07 00:50:47  No: 135196

いま、タイミングチャートをピクチャボックスに表示しようと開発中です。
かんたんにいえば線を引きたいのですが。
ですが、うまく動作しません。
いまの動作は線自体は表示するのですが。
座標指定が間違えてるのかY軸方向ばかり表示されるのです。
また、テキストボックスに入力した文字もなぜか表示されます。
俺が理想としてる表示としては→|‾‾|_|‾
みたいなUpDownの画像を表示したいのです。 

ソースを貼り付けるので助言お願いします。

Private Sub Command1_Click()
Picture1.Print Text(0).Text; Text(1).Text; Text(2).Text;
On Error Resume Next

Select Case Text(0).Text
Case "H"
For X = 100 To 1000 Step 1000
Picture1.Line (X, 100)-(X, 250)
Next X
Case "L"
For Y = 100 To 1000 Step 1000
Picture1.Line (Y, 100)-(X, 250)
Next Y
End Select

Select Case Text(1).Text
Case "H"
For X = 200 To 1100 Step 1000
Picture1.Line (X, 0)-(X, 150)
Next X
Case "L"
For Y = 200 To 1100 Step 1000
Picture1.Line (Y, 0)-(X, 150)
Next Y
End Select

Select Case Text(2).Text
Case "H"
For X = 300 To 1200 Step 1000
Picture1.Line (X, 0)-(X, 150)
Next X
Case "L"
For Y = 300 To 1300 Step 1000
Picture1.Line (Y, 0)-(X, 150)
Next Y
End Select

Picture1.Visible = True
End Sub


大吉末吉  2007-02-07 01:02:02  No: 135197

> また、テキストボックスに入力した文字もなぜか表示されます。
なぜかも何も、

> Picture1.Print Text(0).Text; Text(1).Text; Text(2).Text;
表示しているからでは?

> 座標指定が間違えてるのか
そういう問題なんでしょうか???

提示されたのは、「等間隔に縦線を引く」のと「等間隔に横線を引く」プログラムにしか見えませんけど・・・

提示したコードのどのあたりで、

> →|‾‾|_|‾

こういう表示になるはずなんです?


黒頭巾  2007-02-07 01:15:22  No: 135198

とりあえず、気になった点

For X = 100 To 1000 Step 1000
初期値100のXの値が1000以上になるまで繰り返す。
でも、1回のループでXには1000が加算されてます。

Picture1.Line (Y, 0)-(X, 150)
  XがX座標、YがY座標ですよね?
  (X座標, Y座標)って形式なので、X座標の位置にYを入れるのはおかしいかな。
  案の定、実行したら斜め線になりました。


そがっち  2007-02-07 01:23:55  No: 135199

まず……
※マルチポストはやめましょう。
  内容的に、こちらで話を進める方針なのだとは思いますが、
  それならQ&A掲示板の方で、その旨を一言書いてから、
  Q&A掲示板の方は「解決」したことにしておくとか、しておいて下さい。

ざっと見てみましたが、話を始める前に1つ。
インデント(字下げ、段落付け)を行う癖をつけましょう。
それだけで、命令の終端とかループの区切りとか、見通しが格段に良くなります。

では本題へ。

Private Sub Command1_Click()
    Picture1.Print Text(0).Text; Text(1).Text; Text(2).Text;    'ここでテキスト書いてますよ(^^;
    On Error Resume Next

    Select Case Text(0).Text
        Case "H"
            'Q&Aで あんびさんが書かれてますが、このFor〜Nextループは無意味です。
            '2回目のループで X = 1100 となるのでループ終了です
            For X = 100 To 1000 Step 1000
                Picture1.Line (X, 100)-(X, 250)    'X座標が不変でY座標だけ2つ指定しているので縦線ですね
            Next X
        Case "L"
            'ここのループも無意味です
            For Y = 100 To 1000 Step 1000
                Picture1.Line (Y, 100)-(X, 250)    'ここの変数 X は未使用です。ここを通ったら斜線が引かれませんか?
                                                   'Yと間違っているとしたら、これも縦線ですね
        Next Y
    End Select

(以下略)

じっくり見てみて、わかりますか?
実際に、「縦線しか引こうとしていない」んです。(XとYを一部間違っていると仮定して)
まずは、余計なFor〜Nextループを外した上で、キッチリと横線を引くロジックを
考えて書いてみましょう。
(ループさせようとしたところで、自動で横線を引いたりは してくれませんよ?)


あんび  2007-02-07 18:33:03  No: 135200

あー、私の書込みは無駄だったようですね。
ではでは。


通ってみた  2007-02-07 19:51:06  No: 135201

プログラムがそうなっているかどうかは別として、恐らくHと入力したら↑、Lと入力したら↓に線を移動させたいのでしょうね

まず仕様からお尋ねしますが、高さの段階は2段階、つまり上段と下段しかないのですか?
そして、ひとつ入力後はひとつ右に平行移動するという仕様で合っていますか?
上記の解釈が合っているとして、線の出現位置は上段ですか?下段ですか?
つまり、下のようにしたいということでよいですか?

HHLHLLと入力した場合、

‾‾|_|‾|__

となる

とりあえずこれくらいの情報は最初に出しておくべきかと
あと、見たところVB6のようですが、開発環境も忘れずにどうぞ


  2007-02-19 22:19:25  No: 135202

普通にミスコードでした…。
多大なるご迷惑かけてすみませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加