コンボボックスとピクチャボックスがあるアプリケーションで作業しています。ユーザーがパスを選択すると、コンボボックスは 2000 個の画像へのパスを読み込み、最初の画像を表示します。ユーザーがコンボボックスのインデックスを変更すると、表示される画像が変更されますが、ピクチャボックス内の画像を削除する方法がわかりません。
イメージを上書きするだけでは、メモリが原因でプログラムがクラッシュするため、繰り返し実行すると機能しません。ピクチャボックス内の画像を削除するにはどうすればよいですか?
編集: 私はいくつかの変更を加えましたが、エラーを再び再現できないようです..おそらくそれは何か他のものでした. しかし、確認のために、このコードはメモリリークを起こしていますか?
ヒント: config は、いくつかの情報 (この場合は画像の場所) を含むシングルトンです。
private: System::Void comboBox_image1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) {
System::String^ aux;
DIC_config* config=DIC_config::Instance();
if(config->images_path!=NULL){
aux=gcnew System::String(config->images_path);
aux=aux+"\\CAM_0\\Snap_0_0"+(this->comboBox_image1->SelectedIndex+1)+".bmp";
System::IO::FileStream^ image_file=gcnew System::IO::FileStream(aux,System::IO::FileMode::Open,System::IO::FileAccess::Read);
System::Drawing::Bitmap^ img = gcnew System::Drawing::Bitmap(image_file);
this->pictureBox_image1->Image=img;
//img->~Bitmap(); this doesnt work, deletes the image of picturebox and makes the program chrash
}
}