• ベストアンサー

ピクチャボックスから座標を読み込み 配列へ

プログラミング初心者でわからないことがあるのでどなたかわかるかたいましたら教えてください<(_ _)> ピクチャボックスにグラフを書くプログラムを作っているのですが、 波状のグラフから その最大値、最小値をいくつかとり、それらについて近似直線を書こうとしています。 その際に、範囲指定をマウスで行うか、もしくはピクチャボックス上をクリックするとその座標を読み込み配列に入れたいのです。 例えばc(600)の配列に クリックしたら順次その座標データ(X座標だけでかまわないです)が入るようにするにはどうしたらいいでしょうか? 具体的には1回クリックしたらc(0)へ、2回目はc(1)へ・・・・ とこれを繰り返し操作できるようにしたいのです ぐぐってみましたが、座標を読み込みはありますが、それを活用するというものがなかなかなくて。 わかる方いましたらお願いします。

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

  • ベストアンサー
noname#221368
noname#221368
回答No.2

 図形に関する対話型プログラムは手がかかります。たぶんどんな言語を使っても同じです。 (1)Clickではなく、PictureBoxのMouseDown(Up)イベントの方がいいと思います。イベントプロシージャの引数にx,yがあり、そこからMouseクリック位置の(x,y)座標を取れます。(x,y)は、PictureBoxの内部座標系での値なので、実座標への変換は書く必要があります。 (2)PictureBoxのMouseDown(Up)イベントは、どんな時でも動きます。なので、Formに座標取得中である事を示す、Boolean型のPrivate変数を追加し(例えばIsDoingとします)、その値を「開始/終了」ボタンで切り替えられるようにして(開始:True,終了:False)、もしIsDoing = Falseなら、MouseDown(Up)イベントからExit Subするようにします。 (3)取得点をPictureBoxに追加表示するといいと思います。 (4)(3)で画面が汚くなった時の事も考えて、再描画ボタンを設けることもお奨めします。  とりあえず、こんなところです。

keybrade
質問者

お礼

詳しい説明ありがとうございます<(_ _)> クリックじゃなく、アップダウンのイベントを使うのですね 実座標への変換はなんなくできるので試してみようと思います どうも、貴重な回答ありがとうございます<(_ _)>

その他の回答 (1)

回答No.1

VB6.0として回答します。 クリック回数用の変数をpublic で宣言しておいて、 ピクチャボックスのClickイベントで 配列c(クリック回数用変数)へ座標データをセットした後、 その変数を+1誌手あげればいいんではないでしょうか?

keybrade
質問者

お礼

早速の返事ありがとうございます。VB6です;記載してなくてすいませんでした; そのピクチャボックスのクリックイベントのプログラムもどのようにしたらいいかわからないんです;できれば、シンプルでわかりやすい例とかあるといいのですが; それと配列c(クリック回数用変数)へ座標データをセットというのはどんな感じにやればいいのでしょうか? 質問ばかりですみません<(_ _)> ぜひ回答していただけたらと思います;