DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ピクチャーボックスに線グラフを描画する(2)

環境/言語:[C#]
分類:[.NET]

データグリッドに入っている要素をピクチャーボックスに線グラフとして
描画することはできたのですが、ピクチャーボックスの大きさを超えたところは
表示されません。どうすればうまくピクチャーボックス内に収まるのでしょうか?

//今のプログラムのソース
//グリッド内のレコード数
iCnt = dataGrid1.BindingContext[dataSet41,"テーブル名"].Count;
 
//【折れ線グラフ】の描画
for(i = 0; i < iCnt-1; i++){
 grfx.DrawLine(
 pen, // Pen
 i, // X1位置
 Convert.ToInt32((string)dataGrid1[i,2]), // Y1位置
 i, // X2位置
 Convert.ToInt32((string)dataGrid1[i+1,2]) // Y2位置
);

ピクチャーボックスの大きさは(624, 176)です。
要素が2個でも100個でもピクチャーボックスに収まるようにしたいです。
縦軸も同様にどんな数字でもピクチャーボックスに収まるようにしたいです。
数学的なことを質問して誠に申し訳ありません。
この場合、x・yの最大値をピクチャーボックスの大きさに合わせた係数を出してあげればOKです。
つまり x の最大値が 624 の位置に、y の最大値が 176 の位置に描画されることになるよう、x・y値に係数を掛けて描画すればお望みどおりになると思います。

x の最大値が 30000 だとすると 30000 / 624 = 48.07692・・・ が係数となります。
y の最大値が 20000 だとすると 20000 / 176 = 113.6363・・・ が係数となります。

説明を単純化するために、線グラフの原点が左上(x:0, y:0)で、且つデータグリッドから取り出される値は符号無し値と仮定しています。
原点位置を変更する場合や符号有り値を使用する場合は、ご自分で色々と試されてください。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板