プロが教えるわが家の防犯対策術!

formアプリケーションでボタンをクリックした際にpictureboxにとある波形を描画するようなプログラムを書いたのですが、これを関数化したいです。以下のソースコードのcurrent_waveform[,]とin_maxが引数にあたる部分にしたいです。bitmapの生成と描画、pictureboxに表示するまでを丸々関数化することは可能なのでしょうか?

インデント気持ち悪くてごめんなさい調整がうまくできませんでした;;


Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics g = Graphics.FromImage(canvas);

//pictureboxを8*8で分割し、左上から右下に向かって1つ目の波形、
//2つ目の波形...となるようにxyzの値を変化させて描画位置を調整しています。
for (y = 1; y < 16; y += 2)
{
for (i = 1 + (8 * z), x = 0; i < 9 + (8 * z); i++, x += 800)
{
for (j = 1; j < 800; j++)//データ点数
{
g.DrawLine(Pens.Red, (j - 1 + x) / 8, (float)(y * 0.0625 * canvas.Height - current_waveform[i - 1, j - 1] / in_max * 32.0),(j + x) / 8, (float)(y * 0.0625 * canvas.Height - current_waveform[i - 1, j] / in_max * 32.0));
}
}
z++;
}

g.Dispose();
pictureBox1.Image = canvas;

質問者からの補足コメント

  • HAPPY

    ごめんなさいできました!
    private void DrawWave~ですね。
    ありがとうございます、助かりました!

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/05/26 13:35

A 回答 (1件)

宣言されていない変数があるのでかなり怪しいソースになりますが…



private DrowWave(PictureBox pictureBox1,double in_max,object[,] current_waveform){

double z=0;
Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics g = Graphics.FromImage(canvas);

//pictureboxを8*8で分割し、左上から右下に向かって1つ目の波形、
//2つ目の波形...となるようにxyzの値を変化させて描画位置を調整しています。
for (y = 1; y < 16; y += 2){
for (i = 1 + (8 * z), x = 0; i < 9 + (8 * z); i++, x += 800){
for (j = 1; j < 800; j++){
//データ点数
g.DrawLine(Pens.Red, (j - 1 + x) / 8, (float)(y * 0.0625 * canvas.Height - current_waveform[i - 1, j - 1] / in_max * 32.0),(j + x) / 8, (float)(y * 0.0625 * canvas.Height - current_waveform[i - 1, j] / in_max * 32.0));
}
}
z++;
}

g.Dispose();
pictureBox1.Image = canvas;

}

あとできれば1文字変数は止めた方が良いですよ。
ソースコードの中での検索がやりにくいですから。
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございます!確かに検索で一文字変数あるとやりづらいですね...

重ねての質問でごめんなさい。
この場合だと戻り値の型は何型になるのでしょうか?

お礼日時:2018/05/26 10:41

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