winforms — импорт изображения из openfiledialog в Picturebox, в визуальном переполнении стека

Я застрял в импорте изображения из openfiledialog в Picturebox, в Visual C ++ Windows Form в Visual Studio 2012 … Я искал его на разных форумах и нашел одно возможное решение:

private void btnLoad_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Title = "Select a picture";
op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" +
"JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
"Portable Network Graphic (*.png)|*.png";
if (op.ShowDialog() == true)
{
imgPhoto.Source = new BitmapImage(new Uri(op.FileName));
}

}

Но в этом решении или других решениях, близких к этому, не позволяет мне создавать
«новый OpenFileDialog ();»

другое решение, предложенное Microsoft для файла курсора, было …

private:
System::Void button1_Click(System::Object *  sender,
System::EventArgs *  e)
{
// Displays an OpenFileDialog so the user can select a Cursor.
OpenFileDialog * openFileDialog1 = new OpenFileDialog();
openFileDialog1->Filter = "Cursor Files|*.cur";
openFileDialog1->Title = "Select a Cursor File";

// Show the Dialog.
// If the user clicked OK in the dialog and
// a .CUR file was selected, open it.
if (openFileDialog1->ShowDialog() == DialogResult::OK)
{
// Assign the cursor in the Stream to
// the Form's Cursor property.
this->Cursor = new
System::Windows::Forms::Cursor(
openFileDialog1->OpenFile());
}
}

та же проблема в этом тоже ….

Кто-нибудь может предложить самый простой подход для выполнения требуемой задачи

1

Решение

В первом примере вы пытаетесь использовать C# sintax. В C++/CLI ты не будешь использовать . но ->ни new или же * для ручек. Вам на самом деле нужно gcnew а также ^,
Помимо этого, посмотрите на этот простой код:

Замечания: Чтобы этот пример компилировался, создайте новый проект с именем TestImageдобавить кнопку под названием btnLoad и картинка под названием pbImage,

В c++ лучше разделить заголовочный файл (.h ) из вашего файла C ++ ( .cpp ). В вашем заголовочном файле объявите только прототип click event:

private: System::Void btnLoad_Click(System::Object^  sender, System::EventArgs^  e);

В вашем файле .cpp у вас должно быть что-то вроде этого:

#include "stdafx.h"#include "Form1.h"
using namespace TestImage;

System::Void Form1::btnLoad_Click(System::Object^  sender, System::EventArgs^  e) {

OpenFileDialog^ ofd = gcnew OpenFileDialog();
//insert here the filter if you want
//ofd->Filter..
if (ofd->ShowDialog() == System::Windows::Forms::DialogResult::OK) {

pbImage->Image = Image::FromFile(ofd->FileName);
}
}

Не забудьте изменить размер в соответствии с вашим изображением pbImage и у тебя все будет хорошо.

Надеюсь, это поможет.

1

Другие решения


По вопросам рекламы [email protected]