我正在一个有组合框和图片框的应用程序中工作。用户选择一个路径,组合框会加载 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
}
}