Загрузите растровое изображение в форму окна с помощью диалогового окна с открытым файлом!
Мне нужно открыть растровое изображение в форме окна, используя диалоговое окно с открытым файлом (я загружу его с диска). Изображение должно поместиться в окне изображения. Вот какой код я пробовал, но получил ошибку!
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "Open Image";
dlg.Filter = "bmp files (*.bmp)|*.bmp";
if (dlg.ShowDialog() == DialogResult.OK)
{
PictureBox PictureBox1 = new PictureBox();
PictureBox1.Image(dlg.FileName);
}
dlg.Dispose();
}
Ответы
Ответ 1
Вам нужно создать экземпляр класса Bitmap
, используя перегрузка конструктора, которая загружает изображение из файла на диск. Поскольку ваш код написан сейчас, вы пытаетесь использовать свойство PictureBox.Image
, как если бы это был метод.
Измените свой код, чтобы он выглядел следующим образом (также используя using
statement, чтобы обеспечить правильное удаление, а не вручную вызывать Dispose
):
private void button1_Click(object sender, EventArgs e)
{
// Wrap the creation of the OpenFileDialog instance in a using statement,
// rather than manually calling the Dispose method to ensure proper disposal
using (OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Title = "Open Image";
dlg.Filter = "bmp files (*.bmp)|*.bmp";
if (dlg.ShowDialog() == DialogResult.OK)
{
PictureBox PictureBox1 = new PictureBox();
// Create a new Bitmap object from the picture file on disk,
// and assign that to the PictureBox.Image property
PictureBox1.Image = new Bitmap(dlg.FileName);
}
}
}
Конечно, это не будет отображаться в любом месте формы, потому что созданный вами элемент управления изображением не добавлен в форму. Вам нужно добавить новый элемент управления изображением, который вы только что создали, в форму Controls
collection с помощью Add
. Обратите внимание на строку, добавленную к приведенному здесь коду:
private void button1_Click(object sender, EventArgs e)
{
using (OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Title = "Open Image";
dlg.Filter = "bmp files (*.bmp)|*.bmp";
if (dlg.ShowDialog() == DialogResult.OK)
{
PictureBox PictureBox1 = new PictureBox();
PictureBox1.Image = new Bitmap(dlg.FileName);
// Add the new control to its parent controls collection
this.Controls.Add(PictureBox1);
}
}
}
Ответ 2
Вам следует попробовать:
- Создать визуальный образ в форме (проще)
- Установите для свойства
Dock
свойство picturebox на Fill
(если вы хотите, чтобы изображение заполнило форму)
- Установите
SizeMode
для окна с изображениями StretchImage
Наконец:
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "Open Image";
dlg.Filter = "bmp files (*.bmp)|*.bmp";
if (dlg.ShowDialog() == DialogResult.OK)
{
PictureBox1.Image = Image.FromFile(dlg.Filename);
}
dlg.Dispose();
}
Ответ 3
Хорошо работает.
Попробуйте это,
private void addImageButton_Click(object sender, EventArgs e)
{
OpenFileDialog of = new OpenFileDialog();
//For any other formats
of.Filter = "Image Files (*.bmp;*.jpg;*.jpeg,*.png)|*.BMP;*.JPG;*.JPEG;*.PNG";
if (of.ShowDialog() == DialogResult.OK)
{
pictureBox1.ImageLocation = of.FileName;
}
}
Ответ 4
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
if (open.ShowDialog() == DialogResult.OK)
pictureBox1.Image = Bitmap.FromFile(open.FileName);
}
Ответ 5
Вы также можете попробовать, PictureBox1.Image = Image.FromFile("<your ImagePath>" or <Dialog box result>);
Ответ 6
PictureBox.Image - это свойство, а не метод. Вы можете установить его так:
PictureBox1.Image = System.Drawing.Image.FromFile(dlg.FileName);
Ответ 7
Вы можете попробовать следующее:
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Title = "Select file to be upload";
fDialog.Filter = "All Files|*.*";
// fDialog.Filter = "PDF Files|*.pdf";
if (fDialog.ShowDialog() == DialogResult.OK)
{
textBox1.Text = fDialog.FileName.ToString();
}
}
Ответ 8
Это просто. Просто добавьте:
PictureBox1.BackgroundImageLayout = ImageLayout.Zoom;