Chartを使ってグラフを書いたときに、そのときのChartのフォーム上の座標とChartの目盛りを等しくする方法がありましたら、教えてください。。
Label1.Left:=a;
Label1.Top:=b;
のようにして、Chartのグラフ上の目盛り(a,b)を指定すると、
その指定した座標にラベルが貼り付くようにしたいのですが、、、、、
ラベルに座標を指定すると、フォーム上の座標に相当する位置に貼り付いてしまいます。。困っています。。
返信お願いします。。。
座標の変換を行いたいということですよね。
方法はいろいろあります。
もっともDelphiらしい方法は、
座標を指定したいコントロールの
親コントロールに対する位置を加算する方法です。
では、Label1をTQRChart上の位置(X,Y)に移動してみます。
QRChar1: TQRChart が Form1: TForm に、のっているとします。
Label1: TLabelは、Form1が持ってるものとします。
さらに、以下はForm1の手続き、関数またはイベントハンドラ内の
ブロックだとします。
Label1.Left := QRChar1.Left + X;
Label1.Top := QRChar1.Top + Y;
以上です。
> では、Label1をTQRChart上の位置(X,Y)に移動してみます。
Chart上のグラフと言われているので、ChartのLeft, Topは使えません。
> Label1.Left:=a;
> Label1.Top:=b;
> のようにして、Chartのグラフ上の目盛り(a,b)を指定すると、
前に別の件でここの掲示板でレスしてあります。
完全な答えではないかもしれませんが、調べてみてください。
その上でだめだった場合、どのようにしたらどうなったのか書いてください。
わかりません。。
helpを見て一つ一つ調べたのですが・・・・・・
グラフ上の目盛りで、指定することは無理なのでしょうか??
Halbow です。
にしのさんの前のスレッドでの回答で解決しそうな感じです。
わたしも TChart を使ったことがないのですが、グラフ上の
座標を Form1 の座標に変換できればいいのですね。ヘルプを
よむと
「チャート上でのカスタム描画」
座標値の計算
軸の値から画面の座標値を割り出すメソッド
CalcPosValue
CalcPosPoint
CalcSizeValue
CalcYPosとCalcXPos
系列の値から画面の座標値を割り出すメソッド
CalcPosValue
CalcXPos と CalcYPos
XscreenToValue と YScreenToValue
となっていて、詳しく説明されいます。これから、グラフ上の
座標がスクリーン座標に変換されます。スクリーン座標から、
Form1 の座標に変換するには、TForm の ScreenToClient メソ
ッドを使います。
違っていたらすみません。
Halbow です。
ヘルプでは、「画面座標ピクセル値」となっているのはスクリーン座標では
ないようですね。TChart 内で、左上隅からのピクセル座標のようです。
ですから、ScreenToClient は関係なく、求めた座標値に TChart の
Left と Top を加えると、Form1 の座標になるようです。
わかりやすい説明、ありがとうございます。。
グラフ上の座標を Form1 の座標に変換する方法はわかったのですが、
逆に、Form1の座標をグラフ上の座標に変換するには
どうしたらいいのでしょうか??
ヘルプを何度も見ているのですが、自分の知識不足のためか、
わかりません、、、、、、、、、
大変すいませんが、ご指導お願いします。。
ツイート | ![]() |