Как передать изображения из динамически создаваемого 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);
}