最速怪談選手権

複数のグラフを作成しようと思い、2つのクラスを作りました。
1つ目のクラスで、下のように書き、
public class clsWave
{
public const int count = 1024;
public int[] data = new int[count];
    public byte range;
public double[] realValue = new double[count];
public PictureBox pcb;
    public Pen myPen;
;

public void Draw(Graphics g, int v)
{
int h = pcb.Height;
int w = pcb.Width;
int stpW = w / count; // X座標

      Point[] lp = new Point[count];
for (int i = 0; i < data.Length; i++)
{
lp[i] = new Point(i * stpW, h - (int)(realValue[i] / (v * 8) * h));
}
g.DrawLines(myPen, lp);
}
}

もう一つのクラスで、グラフを下のように作りました。
     clsWave BI = new clsWave();
clsWave BV = new clsWave();
clsWave CI = new clsWave();
clsWave CV = new clsWave();
clsWave EI = new clsWave();
clsWave EV = new clsWave();
clsWave SI = new clsWave();
clsWave SV = new clsWave();

この、グラフを配列にしたいのですが、私の力では、まだわかりません。
どのように作ればよいのでしょうか?教えてください。よろしくお願いいたします。

A 回答 (1件)

こんな感じでしょうか。


clsWave[] a = new clsWave[8];
for( int i = 0; i < a.Length; i++ )
{
a[i] = new clsWave();
}

この回答への補足

ありがとうございます。 こんなに簡単に書けるのに、変なことを色々と書いていました。
実はまだ続きがありまして、最初の書き方だと、下のように同じようなことを、8回も書かないといけないので、短くしたかったのです。
今、a[i].ketaと書いても、エラーが出るのですが、どうすれば良いのでしょうか?本当に初心者の質問ですみません。

     BI.keta = BI.range & 0x0F;
BI.tani = BI.range & 0xF0;
BI.myPen = Pens.White;
BI.pcb = this.pcbGraph;
BI.max = pcbGraph.Height;


for (int i = 0; i < BI.data.Length; i++)
{
BI.data[i] += i / 10;
}

BV.keta = BV.range & 0x0F;
BV.tani = BV.range & 0xF0;
BV.myPen = Pens.White;
BV.pcb = this.pcbGraph;
BV.max = pcbGraph.Height;

for (int i = 0; i < BV.data.Length; i++)
{
BV.data[i] += i / 20;
}

CI.keta = CI.range & 0x0F;
CI.tani = CI.range & 0xF0;
CI.myPen = Pens.Red;
CI.pcb = this.pcbGraph;
CI.max = pcbGraph.Height;

for (int i = 0; i < CI.data.Length; i++)
{
CI.data[i] += i / 15;
}

補足日時:2012/05/19 17:02
    • good
    • 0
この回答へのお礼

自分で解決できました。
またわからないことがあったら、よろしくお願いします。

お礼日時:2012/05/20 23:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!