是否有任何方法使用C#或VBA将jpeg图像插入到Visio中? 插入后有一种方法来格式化它的属性,如宽度,高度,放置在图纸上的位置?在C#或VBA中以编程方式将Jpeg图像插入到Visio中
0
A
回答
2
将图像导入到Visio中时,它们会被包装成标准形状(具有visTypeForeignObject的Type属性)。
从那里你只是在与ShapeSheet中的单元格交谈。 (有关ShapeSheet http://visualsignals.typepad.co.uk/vislog/2007/10/just-for-starte.html的更多详细信息,请参阅此帖子)
因此,您可以从Visio上的宏记录器开始使用这类事物。图片拖动到页面上,会产生输出是这样的:
Sub Macro1()
'Enable diagram services
Dim DiagramServices As Integer
DiagramServices = ActiveDocument.DiagramServicesEnabled
ActiveDocument.DiagramServicesEnabled = visServiceVersion140 + visServiceVersion150
Dim UndoScopeID2 As Long
UndoScopeID2 = Application.BeginUndoScope("Auto Size Page")
Application.ActiveWindow.Page.AutoSize = False
Application.EndUndoScope UndoScopeID2, True
Dim UndoScopeID3 As Long
UndoScopeID3 = Application.BeginUndoScope("Insert")
Application.ActiveWindow.Page.Import "C:\SomeImage.jpg"
Application.EndUndoScope UndoScopeID3, True
ActiveWindow.DeselectAll
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(1), visSelect
Application.ActiveWindow.Selection.Move 2.129396, -0.904364
Dim UndoScopeID4 As Long
UndoScopeID4 = Application.BeginUndoScope("Size Object")
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = "46.261665987369 mm"
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = "212.02916285428 mm"
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionObject, visRowXFormOut, visXFormWidth).FormulaU = "103.47666530807 mm"
Application.EndUndoScope UndoScopeID4, True
Dim UndoScopeID5 As Long
UndoScopeID5 = Application.BeginUndoScope("Size Object")
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = "46.261665987369 mm"
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = "185.77916321819 mm"
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionObject, visRowXFormOut, visXFormHeight).FormulaU = "73.441667394486 mm"
Application.EndUndoScope UndoScopeID5, True
'Restore diagram services
ActiveDocument.DiagramServicesEnabled = DiagramServices
End Sub
宏录制在当前选择上操作,但你并不需要。此外,它使用SRC(节,行,列)语法,而不是更简单的单元名称语法。所以的翻译上面可能是这样的:
Sub TestAddImage()
Call DropImage(ActivePage, "C:\SomeImage.jpg")
End Sub
Private Sub DropImage(ByRef vPag As Visio.Page, imageFile As String)
If Not vPag Is Nothing Then
Dim newShp As Visio.Shape
Set shpNew = vPag.Import(imageFile)
'Set position
shpNew.CellsU("PinX").FormulaU = "75mm"
shpNew.CellsU("PinY").FormulaU = "175mm"
'Set size
shpNew.CellsU("Width").FormulaU = "100mm"
shpNew.CellsU("Height").FormulaU = "80mm"
End If
End Sub
C#的这个版本是这样的:
void Main()
{
var vApp = MyExtensions.GetRunningVisio();
DropImage(vApp.ActivePage, @"C:\SomeImage.jpg");
}
private void DropImage(Visio.Page vPag, string imageFile)
{
if (vPag != null)
{
var shpNew = vPag.Import(imageFile);
//Set position
shpNew.CellsU["PinX"].FormulaU = "75mm";
shpNew.CellsU["PinY"].FormulaU = "175mm";
//Set size
shpNew.CellsU["Width"].FormulaU = "100mm";
shpNew.CellsU["Height"].FormulaU = "80mm";
}
}
注意GetRunningVisio
是我与LinqPad使用扩展方法:
http://visualsignals.typepad.co.uk/vislog/2015/12/getting-started-with-c-in-linqpad-with-visio.html
......但这取决于你如何得到应用程序对象。
相关问题
- 1. 以编程方式将多个jpeg图像嵌入到EXCEL中?
- 2. 以编程方式将几个图像插入到UITableviewcell中?
- 3. 通过VBA将图像导入到Visio
- 4. 以编程方式在aloha编辑器中插入图像
- 5. 在C#中以编程方式将PNG图像跟踪到SVG#
- 6. 用Java或Scala以编程方式将HTML插入到CSV中
- 7. 将图像作为Visio中的形状插入 - VBA
- 8. 如何以编程方式在android或刷新图库中以编程方式将图像添加到图库
- 9. 如何以编程方式在Visio中绘制流程图
- 10. 如何以编程方式将图像插入到Gmail邮件中
- 11. 如何以编程方式将图像插入Word文档?
- 12. 在vba中插入图像
- 13. 以编程方式在android中将文本添加到图像
- 14. 如何以编程方式将行插入到DataGridView中?
- 15. FormView,在OnItemInserting或OnItemUpdating事件中以编程方式插入null
- 16. 以编程方式将行插入表
- 17. Visio VBA以编程方式“点击”操作
- 18. 如何以编程方式在图像视图中插入进度条
- 19. 以编程方式将autocad文件转换为Visio图
- 20. C#以编程方式形成图像
- 21. 以编程方式将插入图像添加到TFS工作项目
- 22. 在C++中以块分割jpeg图像
- 23. 将SVG以编程方式嵌入到.NET中C#
- 24. WPF以编程方式将BitmapImage加载到图像中
- 25. 如何以编程方式将图像添加到资源中?
- 26. 在VBA中使用Base64将图像插入到工作表中?
- 27. 以编程方式将图像添加到Liferay图像库
- 28. 我可以以编程方式将matplotlib图形插入Excel吗?
- 29. 在iOS中以编程方式将jQuery和JavaScript插入到HTML中
- 30. 以编程方式在Datagrid模板c中添加图像#
约翰,那太棒了,它工作完美。但有什么内置的将形状放置在页面的末尾,如shpNew.cellsu.end?或者是否需要运行一个宏来查找您在“sub Macro1”中显示的坐标? – Puneeth
为此,您需要向PinX/Y单元添加公式而不是常量值。对于PinX:'“ThePage!PageWidth-(Width-LocPinX)”'和PinY'“ThePage!PageHeight-(Height-LocPinY)”'。这将设置页面左上角的形状。 – JohnGoldsmith
对不起,我的问题是放在页面的底部,我相信用+修改公式会在页面底部设置形状,不是吗? – Puneeth