Bitmapデータ型の画像幅の拡大
現在Visual studio 2005のフォームアプリケーションでプログラミグを行っている者です。以下のプログラムの中に画像の幅であるw,hという変数があるのですが、私の作ろうとしている画像処理の関係上、この画像データの幅を倍にしたいです(例:3*w,3*h)。しかし、変数宣言(例:int 3*w)やfor文の中で倍にしようとしても、ビルドはできるものの"アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。・・・パラメータは正の値で、高さより小さい値指定しなければなりません。"とでて、実行できません。おそらく倍にしてあげたとこで、倍になった部分の画像データがわからないためこういったエラーが出てしまうのだと考えています。どうにかして、BITMAPデータ型で読み込んだ画像の幅を倍の数値を得たいのですが、エラーのでないようにするためにはどのようにしてあげればいいのでしょうか?わかる方がいたらよろしくお願いします。
プログラムは以下のとおりです。
#pragma once
// 省略 //
}
#pragma endregion
private:Bitmap^ pic;
private:array< Bitmap^>^ bmp; // 原画像格納 //
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
bmp[0] = gcnew Bitmap("画像ファイル1",true);
pictureBox1->Image = bmp[0];
pic = gcnew Bitmap("画像ファイル2",true);
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
int x,y,a,b; /* x,y: 画像の座標 a,b: 複合画像の座標 */
int w = pic->Width; //ここでpic->Width*3としてもエラー /* 複合画像の横幅 */
int h = pic->Height; /* 複合画像の縦幅 */
x = 0; y = 0; a = 0; b = 0;
for(y = 0; y < h; y++){ //ここで3*hとしてもエラー
for(x = 0; x < w; x+=3){
pic->SetPixel( x, y, bmp[1]->GetPixel( x, y ) );
}
}
pictureBox2->Image = pic;
}
};
}