Я застрял в импорте изображения из 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());
}
}
та же проблема в этом тоже ….
Кто-нибудь может предложить самый простой подход для выполнения требуемой задачи
В первом примере вы пытаетесь использовать 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
и у тебя все будет хорошо.
Надеюсь, это поможет.