hello,大家好,我是@似最初
前期通过VB我曾经开发了一个公文排版插件,里面有一个插入电子签章的功能,有人就问这个电子签章能够单独拎出来吗?答案当然是可以的,所以今天采用C#重新简单的重构了该功能,相信只要简单修改一下,绝对满足一些小企业的需要了。
第一步:创建窗体(VSTO开发创建省略)
新建一个窗体,并在窗体上面添加一个用于显示图片的picturebox及分别设置签章和插入签章的button按钮,并根据自身需求修改窗体,如下图所示:
添加openFileDialog1 用于选择图片文件(也可以把签章内置于资源当中调用)。
第二步:引用命名空间
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word; //using·word
在设置中添加字段,用于记录签章地址,如果选择内置签章,可以不用设置。
第三步:核心代码
关键代码:设置签章
private void button1_Click(object sender, EventArgs e)
{
DialogResult dr = openFileDialog1.ShowDialog(); //选择文件
string fileName = openFileDialog1.FileName; //获取所打开文件的文件名,如果是多个文件选择FileNames
Properties.Settings.Default.qzimg = fileName;
Properties.Settings.Default.Save(); //保存自定义
string qzimg = Properties.Settings.Default.qzimg; //实例化图片代码
if (dr == System.Windows.Forms.DialogResult.OK && !string.IsNullOrEmpty(qzimg))
{
pictureBox1.Image= Image.FromFile(qzimg);
}
else
{
MessageBox.Show("您未选择图片","温馨提示");
pictureBox1.Image = null; //如果未选择图片则清空图片
}
}
关键代码:插入签章
private void button2_Click(object sender, EventArgs e)
{
string qzimg = Properties.Settings.Default.qzimg;//实例化签章链接
if (File.Exists(qzimg))
{
Word.Selection sel = Globals.ThisAddIn.Application.Selection; //实例化选择按钮
Word.InlineShape shape = sel.InlineShapes.AddPicture(qzimg); //插入图片并转为形状
shape.Width = 100f;//图片宽度
shape.Height = 100f;//图片高度
shape.ConvertToShape().WrapFormat.Type = Word.WdWrapType.wdWrapSquare;//四周环绕的方式
shape.Select();//选中图片
this.Close();
}else
{
MessageBox.Show("签章未加载成功", "温馨提示");
}
}
关键代码:启动窗口时加载签章
private void Form1_Load(object sender, EventArgs e)
{
string qzimg=Properties.Settings.Default.qzimg;
if (File.Exists(qzimg))
{
pictureBox1.Image = Image.FromFile(qzimg);
}else
{
MessageBox.Show("签章加载失败,请重新设置签章","温馨提示");
pictureBox1.Image = Image.FromFile(""); //可以设置一个未加载时的图片
}
}