Chartの座標とグラフの目盛りの値を等しくするには??


うさぎさん  2003-08-07 20:05:16  No: 4352

Chartを使ってグラフを書いたときに、そのときのChartのフォーム上の座標とChartの目盛りを等しくする方法がありましたら、教えてください。。
Label1.Left:=a;
Label1.Top:=b;
のようにして、Chartのグラフ上の目盛り(a,b)を指定すると、
その指定した座標にラベルが貼り付くようにしたいのですが、、、、、
ラベルに座標を指定すると、フォーム上の座標に相当する位置に貼り付いてしまいます。。困っています。。
返信お願いします。。。


Albert  2003-08-09 10:31:34  No: 4353

座標の変換を行いたいということですよね。

方法はいろいろあります。
もっともDelphiらしい方法は、
座標を指定したいコントロールの
親コントロールに対する位置を加算する方法です。

では、Label1をTQRChart上の位置(X,Y)に移動してみます。

 QRChar1: TQRChart が Form1: TForm に、のっているとします。
 Label1: TLabelは、Form1が持ってるものとします。
 さらに、以下はForm1の手続き、関数またはイベントハンドラ内の
 ブロックだとします。

  Label1.Left := QRChar1.Left + X;
  Label1.Top  := QRChar1.Top  + Y;

以上です。


にしの  2003-08-09 17:00:46  No: 4354

> では、Label1をTQRChart上の位置(X,Y)に移動してみます。
Chart上のグラフと言われているので、ChartのLeft, Topは使えません。

> Label1.Left:=a;
> Label1.Top:=b;
> のようにして、Chartのグラフ上の目盛り(a,b)を指定すると、

前に別の件でここの掲示板でレスしてあります。
完全な答えではないかもしれませんが、調べてみてください。
その上でだめだった場合、どのようにしたらどうなったのか書いてください。


うさぎさん  2003-08-11 18:50:03  No: 4355

わかりません。。
helpを見て一つ一つ調べたのですが・・・・・・
グラフ上の目盛りで、指定することは無理なのでしょうか??


Halbow  2003-08-13 12:08:51  No: 4356

Halbow です。

にしのさんの前のスレッドでの回答で解決しそうな感じです。
わたしも TChart を使ったことがないのですが、グラフ上の
座標を Form1 の座標に変換できればいいのですね。ヘルプを
よむと

「チャート上でのカスタム描画」

座標値の計算
軸の値から画面の座標値を割り出すメソッド

CalcPosValue
CalcPosPoint
CalcSizeValue
CalcYPosとCalcXPos

系列の値から画面の座標値を割り出すメソッド

CalcPosValue
CalcXPos と CalcYPos
XscreenToValue と YScreenToValue

となっていて、詳しく説明されいます。これから、グラフ上の
座標がスクリーン座標に変換されます。スクリーン座標から、
Form1 の座標に変換するには、TForm の ScreenToClient メソ
ッドを使います。

違っていたらすみません。


Halbow  2003-08-13 12:16:43  No: 4357

Halbow です。

ヘルプでは、「画面座標ピクセル値」となっているのはスクリーン座標では
ないようですね。TChart 内で、左上隅からのピクセル座標のようです。
ですから、ScreenToClient は関係なく、求めた座標値に TChart の
Left と Top を加えると、Form1 の座標になるようです。


うさぎさん  2003-08-18 18:15:24  No: 4358

わかりやすい説明、ありがとうございます。。
グラフ上の座標を Form1 の座標に変換する方法はわかったのですが、
逆に、Form1の座標をグラフ上の座標に変換するには
どうしたらいいのでしょうか??
ヘルプを何度も見ているのですが、自分の知識不足のためか、
わかりません、、、、、、、、、
大変すいませんが、ご指導お願いします。。


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

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






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