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;
No.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文字変数は止めた方が良いですよ。
ソースコードの中での検索がやりにくいですから。
回答ありがとうございます!確かに検索で一文字変数あるとやりづらいですね...
重ねての質問でごめんなさい。
この場合だと戻り値の型は何型になるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- その他(プログラミング・Web制作) 物理の斜方投射で目盛りに数値を入れたい 2 2023/05/27 06:32
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
- その他(プログラミング・Web制作) Pythonでのかんたんな物理シミュレーションについての書籍 5 2023/06/02 07:37
- その他(プログラミング・Web制作) 物理の斜方投射の目盛り線とx軸、y軸の追加について 3 2023/05/26 21:11
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- その他(プログラミング・Web制作) 物理の斜方投射のシミュレーションにおける位置や速度の単位について 4 2023/05/31 09:50
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
NVIDIAのシェーダーキャッシュ
-
VB6,リストボックスの特定行の...
-
VC++2010(MFC)での描画
-
エクセルでガンチャートを作成...
-
InvalidateRectの使い方について
-
MFC ビットマップ描画で残像が残る
-
MFCのタイマーのつかい方を教え...
-
VC++プログラムをつかったBMP画...
-
Spreadで表全体を選択した場合...
-
[VB.net] DataGridViewの列ヘッ...
-
MFCでOnPaintのタイミング
-
GDI+について
-
画面リサイズ時のちらつきをな...
-
TextBoxに文字を書いても表示さ...
-
Windowsプログラミング:BitBlt...
-
CScrollViewの使用方法について
-
WM_PAINT
-
ダイアログのボタンコントロー...
-
ウインドウサイズを変更しても...
-
最近描画ツールで文字や色を表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
NVIDIAのシェーダーキャッシュ
-
word
-
[VB.net] DataGridViewの列ヘッ...
-
TextBoxに文字を書いても表示さ...
-
MFCでOnPaintのタイミング
-
UpdateData( FALSE); による文...
-
panelのスクロール表示について
-
VBAにGDI+を参照させる方法
-
VC++プログラムをつかったBMP画...
-
VB.netでのライン描画方法がわ...
-
FlexGridの一部のみ表示を更新...
-
絵を描くにはMac?Windows
-
CStaticコントロールの静的イメ...
-
SHGetFileInfoでアイコンが取得...
-
InvalidateRectの使い方について
-
WM_SIZEとWM_SIZINGの違い (Win...
-
Labelの文字をスクロールする際...
-
OneNote 2010 文字と描画がずれる
-
StretchBlt関数について
おすすめ情報
ごめんなさいできました!
private void DrawWave~ですね。
ありがとうございます、助かりました!