Word VSTO - 在光标点插入形状?
Word VSTO - Insert shape at cursor point?
我使用下面的代码在Word文档中插入一个形状(矩形),
Dim oShpWidth As Single
Dim oShpHght As Single
Dim oShpTop As Single
Dim oShpLeft As Single
With Globals.ThisAddIn.Application.ActiveDocument
oShpWidth = 225.1
oShpHght = 224.5
oShpTop = 0
oShpLeft = 0
.Shapes.AddShape(1, 0, 0, oShpWidth, oShpHght).Select()
With Globals.ThisAddIn.Application.Selection.ShapeRange
.Rotation = 0.0#
.RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionCharacter
.RelativeVerticalPosition = Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionLine
.Left = oShpTop
.Top = oShpLeft
End With
End With
但这会将形状添加到当前页面的顶部。我想在光标点添加形状。怎么做?
您需要在 Selection
处添加形状试试这个:
using System;
using Word = Microsoft.Office.Interop.Word;
using System.Drawing;
namespace Sk.WordAddIn
{
internal class ImageTest
{
internal void InsertShapeAtSelection()
{
Word.Application app = Globals.ThisAddIn.Application;
Word.Document doc = app.ActiveDocument;
Word.InlineShape shape = app.Selection.InlineShapes.AddPicture(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg", false, true, Type.Missing);
shape.Fill.BackColor.RGB = ColorTranslator.ToOle(Color.Transparent);
shape.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
shape.Fill.Transparency = 0f;
shape.Line.Transparency = 0f;
shape.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
}
}
}
编辑:试试这个:
internal void InsertShapeAtSelection()
{
Word.Application app = Globals.ThisAddIn.Application;
Word.Document doc = app.ActiveDocument;
float left = (float)Convert.ToDouble(app.Selection.Information[Word.WdInformation.wdHorizontalPositionRelativeToPage]);
float top = (float)Convert.ToDouble(app.Selection.Information[Word.WdInformation.wdVerticalPositionRelativeToPage]);
Word.Shape shape = doc.Shapes.AddShape(1, left, top, 225.1f, 224.5f);
//To change borders and fill use the properties below
//shape.Fill.BackColor.RGB = ColorTranslator.ToOle(Color.Transparent);
//shape.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
//shape.Fill.Transparency = 0f;
//shape.Line.Transparency = 0f;
//shape.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
//To add a picture uncomment the following
//Word.Range range1 = shape.TextFrame.TextRange;
//range1.InlineShapes.AddPicture(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg", false, true, Type.Missing);
}
希望这对您有所帮助:-)
我使用下面的代码在Word文档中插入一个形状(矩形),
Dim oShpWidth As Single
Dim oShpHght As Single
Dim oShpTop As Single
Dim oShpLeft As Single
With Globals.ThisAddIn.Application.ActiveDocument
oShpWidth = 225.1
oShpHght = 224.5
oShpTop = 0
oShpLeft = 0
.Shapes.AddShape(1, 0, 0, oShpWidth, oShpHght).Select()
With Globals.ThisAddIn.Application.Selection.ShapeRange
.Rotation = 0.0#
.RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionCharacter
.RelativeVerticalPosition = Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionLine
.Left = oShpTop
.Top = oShpLeft
End With
End With
但这会将形状添加到当前页面的顶部。我想在光标点添加形状。怎么做?
您需要在 Selection
处添加形状试试这个:
using System;
using Word = Microsoft.Office.Interop.Word;
using System.Drawing;
namespace Sk.WordAddIn
{
internal class ImageTest
{
internal void InsertShapeAtSelection()
{
Word.Application app = Globals.ThisAddIn.Application;
Word.Document doc = app.ActiveDocument;
Word.InlineShape shape = app.Selection.InlineShapes.AddPicture(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg", false, true, Type.Missing);
shape.Fill.BackColor.RGB = ColorTranslator.ToOle(Color.Transparent);
shape.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
shape.Fill.Transparency = 0f;
shape.Line.Transparency = 0f;
shape.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
}
}
}
编辑:试试这个:
internal void InsertShapeAtSelection()
{
Word.Application app = Globals.ThisAddIn.Application;
Word.Document doc = app.ActiveDocument;
float left = (float)Convert.ToDouble(app.Selection.Information[Word.WdInformation.wdHorizontalPositionRelativeToPage]);
float top = (float)Convert.ToDouble(app.Selection.Information[Word.WdInformation.wdVerticalPositionRelativeToPage]);
Word.Shape shape = doc.Shapes.AddShape(1, left, top, 225.1f, 224.5f);
//To change borders and fill use the properties below
//shape.Fill.BackColor.RGB = ColorTranslator.ToOle(Color.Transparent);
//shape.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
//shape.Fill.Transparency = 0f;
//shape.Line.Transparency = 0f;
//shape.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
//To add a picture uncomment the following
//Word.Range range1 = shape.TextFrame.TextRange;
//range1.InlineShapes.AddPicture(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg", false, true, Type.Missing);
}
希望这对您有所帮助:-)