Здравствуйте! пытаюсь создать программу которая будет скриншоты передавать в динамически создаваемые Picturebox, во всем этом деле я дилетант, в данный момент сигнал с камеры есть, но нигде не могу найти как прописать события кнопки Создать скриншот чтобы при этом изображение с камеры "улетало" в создаваемый picturebox в flowLayoutPanel, при этом чтобы цикл повторялся при каждом нажатии на кнопку, и все изображения создавались в flowLayoutPanel
public partial class Form2 : Form
{
private VideoCapture capture = null;
private DsDevice[] webCams = null;
private int selectedCameraId;
public Form2()
{
InitializeComponent();
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
private void tabPage1_Click(object sender, EventArgs e)
{
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void toolStripDropDownButton1_Click(object sender, EventArgs e)
{
}
//загрузка формы
private void Form2_Load(object sender, EventArgs e)
{
webCams = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
for (int i = 0; i < webCams.Length; i++)
{
toolStripComboBox1.Items.Add(webCams[i].Name);
}
}
private void toolStripComboBox1_Click(object sender, EventArgs e)
{
}
private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
selectedCameraId = toolStripComboBox1.SelectedIndex;
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
try
{
if (webCams.Length == 0)
{
throw new Exception("Нет доступных камер!");
}
else if (toolStripComboBox1.SelectedItem == null)
{
throw new Exception("Необходимо выбрать камеру!");
}
else if (capture != null)
{
capture.Start();
}
else
{
capture = new VideoCapture(selectedCameraId);
capture.ImageGrabbed += Capture_ImageGrabbed;
capture.Start();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void Capture_ImageGrabbed(object sender, EventArgs e)
{
try
{
Mat m = new Mat();
capture.Retrieve(m);
pictureBox1.Image = m.ToImage<Bgr, byte>().Flip(Emgu.CV.CvEnum.FlipType.None).Bitmap;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void pictureBox1_Click_1(object sender, EventArgs e)
{
}
private void toolStripTextBox3_Click(object sender, EventArgs e)
{
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
}
}
}
Пытался применить то что нашел по отображению изображений из папки в flowLayoutPanel, но тут тупик
private void toolStripButton2_Click(object sender, EventArgs e)
{
try
{
Mat m = new Mat();
capture.Retrieve(m);
pictureBox1.Image = new PictureBox(m.ToImage<Bgr, byte>().Flip(Emgu.CV.CvEnum.FlipType.None).Bitmap);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
foreach (string image in pictureBox1)
{
// create a new control
PictureBox pb = new PictureBox();
// assign the image
pb.Image = new Bitmap(image);
// stretch the image
pb.SizeMode = PictureBoxSizeMode.StretchImage;
// set the size of the picture box
pb.Height = pb.Image.Height / 10;
pb.Width = pb.Image.Width / 10;
// add the control to the container
flowLayoutPanel1.Controls.Add(pb);
}
}