Как передать изображения из динамически создаваемого picturebox в конкретную таблицу MS WORD?

Есть форма, в которой есть текстовые строки, и flowLayotpanel для принятия динамически создаваемых picturebox подскажите пожалуйста код реализации передачи изображений (в данном случае от 1 до 3 штук) в шаблон MS WORD Для текста передача реализована, не могу найти подходящего решения для изображений

пример кода такой

using DirectShowLib;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;


        private readonly string TemplateFileName = @"D:\BASE\1.docx";
        
        
         private void btn_scrennshot_Click(object sender, EventArgs e)
        {

            try
            {
                if (!Directory.Exists(@"D:\BASE\Images"))
                {
                    Directory.CreateDirectory(@"D:\BASE\Images");
                    MessageBox.Show("OK");
                }
                else
                {
                    string path = @"D:\BASE\Images";

                    pictureBox1.Image.Save(path + @"\" + textBox_3.Text + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".jpeg", ImageFormat.Jpeg);

                }

                var panel = new TableLayoutPanel();

                panel.AutoSize = true;

                Mat m = new Mat();

                capture.Retrieve(m);
                

                var pb = new PictureBox();

                pb.Image = new Bitmap(m.ToImage<Bgr, byte>().Flip(Emgu.CV.CvEnum.FlipType.None).Bitmap);

                pb.SizeMode = PictureBoxSizeMode.Zoom;

                pb.Name = $"SMV_{textBox_3.Text + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second}";

                pb.Height = pb.Image.Height / 10;

                pb.Width = pb.Image.Width / 10;
                
                
                var name = new Label();

                name.Text = $"SMV_{textBox_3.Text + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second}";
                

                var exportimage_btn = new Button();

                exportimage_btn.Text = "Select";

                exportimage_btn.Click += Exportimage_btn_Click;

               

                var deleteimage_btn = new Button();

                deleteimage_btn.Text = "Delete";

                deleteimage_btn.Click += Deleteimage_btn_Click;
                

                panel.Controls.Add(pb);

                panel.Controls.Add(name);

                panel.Controls.Add(exportimage_btn);

                panel.Controls.Add(deleteimage_btn);

                flowLayoutPanel1.Controls.Add(panel);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void Deleteimage_btn_Click(object sender, EventArgs e)
        {
            var deleteButton = (Button)sender;

            var tableLayoutPanel = deleteButton.Parent;

            var flowLayoutPanel1 = tableLayoutPanel.Parent;

            flowLayoutPanel1.Controls.Remove(tableLayoutPanel);

            foreach (Control control in tableLayoutPanel.Controls)

                control.Dispose();

            tableLayoutPanel.Dispose();
        }

        private void Exportimage_btn_Click(object sender, EventArgs e)
        {
            var exportButton = (Button)sender;

            var tableLayoutPanel = exportButton.Parent;

            tableLayoutPanel.Controls.Remove(exportButton);

            flowLayoutPanel_images.Controls.Add(tableLayoutPanel);

            exportButton.Dispose();
        }

        private void btn_close_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        
        
        private void btn_export_Click(object sender, EventArgs e)
        {
            var text1 = textBox_2.Text;
            var text2 = textBox_2.Text;
            var text3 = textBox_3.Text;
            var text4 = textBox_4.Text;
            var data1 = dateTimePicker_1.Value.ToShortDateString();
            var data2 = dateTimePicker_2.Value.ToShortDateString();
            var text5 = textBox_5.Text;
            var text6 = textBox_6.Text;
            var text7 = comboBox_1.Text;
            var text8 = comboBox_2.Text;
            var text9 = comboBox_3.Text;
            var text10 = comboBox_4.Text;
            var text11 = textBox_7.Text;
            var text12 = textBox_8.Text;
            var text13 = comboBox_5.Text;
            var text14 = textBox_9.Text;            

            //TODO WORD
            var wordApp = new Word.Application();
            wordApp.Visible = false;
            try
            {
                var wordDocument = wordApp.Documents.Open(TemplateFileName);

                ReplaceWordStub("{text1}", text1, wordDocument);
                ReplaceWordStub("{text2}", text2, wordDocument);
                ReplaceWordStub("{text3}", text3, wordDocument);
                ReplaceWordStub("{text4}", text4, wordDocument);
                ReplaceWordStub("{data1}", data1 wordDocument);
                ReplaceWordStub("{text5}", text5, wordDocument);
                ReplaceWordStub("{data2}", data2, wordDocument);
                ReplaceWordStub("{text6}", text6, wordDocument);
                ReplaceWordStub("{text7}", text7, wordDocument);
                ReplaceWordStub("{text8}", text8, wordDocument);
                ReplaceWordStub("{text9}", text9, wordDocument);
                ReplaceWordStub("{text10}", text10, wordDocument);
                ReplaceWordStub("{text11}", text11, wordDocument);
                ReplaceWordStub("{text12}", text12, wordDocument);
                ReplaceWordStub("{text13}", text13, wordDocument);
                ReplaceWordStub("{text14}", text14, wordDocument);

                wordDocument.SaveAs2(@"D:\BASE\2.docx");
                wordApp.Visible = true;
            }
            catch
            {
                MessageBox.Show("Error!");
            }
        }

        private void ReplaceWordStub(string stubToReplace, string text, Word.Document wordDocument)
        {
            var range = wordDocument.Content;
            range.Find.ClearFormatting();
            range.Find.Execute(FindText: stubToReplace, ReplaceWith: text);
        }

Ответы (0 шт):