Aspose.Words for .NET下载地址 https://soft51.cc/software/175811283999782847
图像和形状是增强Word文档视觉效果的重要元素。本教程将介绍如何使用Aspose.Words for .NET进行图像插入、形状创建、文本框制作等操作,帮助您创建专业美观的文档。
Aspose.Words支持多种图像格式(JPEG、PNG、BMP、GIF等)和插入方式:
using Aspose.Words;
using Aspose.Words.Drawing;
using System.Drawing;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// 插入背景文本
builder.Writeln("这是演示图像插入和定位的文档。");
builder.Writeln("下面将展示不同的图像环绕和定位方式。");
// 1. 嵌入式图像(默认方式)
Shape inlineImage = builder.InsertImage("logo.png", 100, 50);
builder.Writeln("这是嵌入式图像,作为文本的一部分。");
builder.Writeln();
// 2. 浮动图像 - 四周环绕
Shape floatingImage = builder.InsertImage("chart.png", 200, 150);
floatingImage.WrapType = WrapType.Square;
floatingImage.RelativeHorizontalPosition = RelativeHorizontalPosition.Column;
floatingImage.RelativeVerticalPosition = RelativeVerticalPosition.Paragraph;
floatingImage.Left = 250;
floatingImage.Top = 20;
builder.Writeln("这段文字将围绕右侧的浮动图像。四周环绕方式使得文本在图像四周流动," +
"创造出专业的排版效果。这种布局常用于报告和文档中。");
// 3. 上下环绕图像
builder.InsertBreak(BreakType.PageBreak);
Shape topBottomImage = builder.InsertImage("banner.png", 400, 80);
topBottomImage.WrapType = WrapType.TopBottom;
topBottomImage.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
topBottomImage.HorizontalAlignment = HorizontalAlignment.Center;
builder.Writeln("上下环绕方式适合横幅类图像,文本在图像的上方和下方流动。");
doc.Save("图像插入定位.docx");
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("图像格式化与优化示例");
builder.Writeln();
// 基础图像调整
Shape originalImage = builder.InsertImage("photo.jpg", 200, 150);
builder.Writeln("原始图像");
builder.Writeln();
// 添加边框和阴影效果
Shape styledImage = builder.InsertImage("photo.jpg", 200, 150);
styledImage.Stroke.Color = Color.DarkBlue;
styledImage.Stroke.Weight = 3.0;
styledImage.ShadowFormat.Visible = true;
styledImage.ShadowFormat.Color = Color.Gray;
styledImage.ShadowFormat.Size = 0.1;
styledImage.ShadowFormat.Blur = 5.0;
styledImage.ShadowFormat.Distance = 3.0;
styledImage.ShadowFormat.Angle = 45;
builder.Writeln("添加边框和阴影的图像");
doc.Save("图像格式化.docx");
public static class ImageOptimizer
{
// 压缩文档中的所有图像
public static void CompressImages(Document doc, int quality = 75)
{
foreach (Shape shape in doc.GetChildNodes(NodeType.Shape, true))
{
if (shape.HasImage && shape.ImageData?.ImageBytes != null)
{
byte[] imageBytes = shape.ImageData.ImageBytes;
byte[] compressedBytes = CompressImage(imageBytes, quality);
shape.ImageData.SetImage(compressedBytes);
}
}
}
// 调整图像尺寸
public static void ResizeImages(Document doc, int maxWidth = 800, int maxHeight = 600)
{
foreach (Shape shape in doc.GetChildNodes(NodeType.Shape, true))
{
if (shape.HasImage)
{
if (shape.Width > maxWidth || shape.Height > maxHeight)
{
double widthRatio = maxWidth / shape.Width;
double heightRatio = maxHeight / shape.Height;
double scaleFactor = Math.Min(widthRatio, heightRatio);
shape.Width *= scaleFactor;
shape.Height *= scaleFactor;
}
}
}
}
private static byte[] CompressImage(byte[] imageBytes, int quality)
{
// 简化的压缩实现
return imageBytes; // 实际应用中需要使用图像处理库
}
}
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Font.Bold = true;
builder.Writeln("形状创建与编辑示例");
builder.Font.Bold = false;
builder.Writeln();
// 创建基础形状
Shape rectangle = new Shape(doc, ShapeType.Rectangle);
rectangle.Width = 150;
rectangle.Height = 100;
rectangle.Left = 50;
rectangle.Top = 50;
rectangle.FillColor = Color.LightBlue;
rectangle.Stroke.Color = Color.DarkBlue;
rectangle.Stroke.Weight = 2.0;
rectangle.WrapType = WrapType.None;
builder.CurrentParagraph.AppendChild(rectangle);
Shape circle = new Shape(doc, ShapeType.Ellipse);
circle.Width = 100;
circle.Height = 100;
circle.Left = 250;
circle.Top = 50;
circle.FillColor = Color.LightGreen;
circle.Stroke.Color = Color.DarkGreen;
circle.Stroke.Weight = 2.0;
circle.WrapType = WrapType.None;
builder.CurrentParagraph.AppendChild(circle);
// 创建带文字的箭头
Shape arrow = new Shape(doc, ShapeType.Arrow);
arrow.Width = 200;
arrow.Height = 50;
arrow.Left = 100;
arrow.Top = 200;
arrow.FillColor = Color.Gold;
arrow.Stroke.Color = Color.Orange;
arrow.Stroke.Weight = 1.5;
arrow.WrapType = WrapType.None;
builder.CurrentParagraph.AppendChild(arrow);
builder.Writeln();
builder.Writeln("上方展示了矩形、圆形和箭头等基础形状。");
doc.Save("基础形状创建.docx");
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("这是一个包含文本框和标注的文档示例。");
builder.Writeln("文本框可以用于添加补充说明、引用或重要提示。");
builder.Writeln();
// 创建简单文本框
Shape textBox1 = builder.InsertShape(ShapeType.TextBox, 250, 80);
textBox1.Left = 300;
textBox1.Top = 50;
textBox1.FillColor = Color.LightYellow;
textBox1.Stroke.Color = Color.Orange;
textBox1.Stroke.Weight = 1.5;
builder.MoveTo(textBox1.FirstParagraph);
builder.Font.Size = 12;
builder.Font.Color = Color.DarkBlue;
builder.Write("重要提示:这是文本框中的内容。");
// 回到主文档
builder.MoveToDocumentEnd();
builder.Writeln();
// 创建带标题的信息框
Shape infoBox = builder.InsertShape(ShapeType.TextBox, 300, 120);
infoBox.Left = 50;
infoBox.Top = 150;
infoBox.FillColor = Color.AliceBlue;
infoBox.Stroke.Color = Color.DarkBlue;
infoBox.Stroke.Weight = 2.0;
builder.MoveTo(infoBox.FirstParagraph);
builder.Font.Size = 14;
builder.Font.Bold = true;
builder.Font.Color = Color.DarkBlue;
builder.Write("技术说明");
builder.InsertBreak(BreakType.LineBreak);
builder.Font.Size = 11;
builder.Font.Bold = false;
builder.Font.Color = Color.Black;
builder.Write("这里可以添加详细的技术说明内容,支持多行文本和基本的格式化功能。");
// 创建标注
Shape callout = builder.InsertShape(ShapeType.BalloonCallout, 200, 100);
callout.Left = 400;
callout.Top = 200;
callout.FillColor = Color.LightGreen;
callout.Stroke.Color = Color.Green;
builder.MoveTo(callout.FirstParagraph);
builder.Font.Size = 10;
builder.Font.Color = Color.DarkGreen;
builder.Write("这是标注,用于指向特定内容。");
builder.MoveToDocumentEnd();
builder.Writeln("标注可以用于解释图表、标记重要信息等。");
doc.Save("文本框和标注.docx");
public class ShapeManager
{
private Document document;
public ShapeManager(Document doc)
{
document = doc;
}
// 创建带文本的矩形
public Shape CreateLabeledRectangle(DocumentBuilder builder, string text, double width, double height,
double left, double top, Color fillColor, Color borderColor)
{
Shape rect = builder.InsertShape(ShapeType.Rectangle, width, height);
rect.Left = left;
rect.Top = top;
rect.FillColor = fillColor;
rect.Stroke.Color = borderColor;
rect.Stroke.Weight = 1.5;
rect.WrapType = WrapType.None;
builder.MoveTo(rect.FirstParagraph);
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
builder.Font.Size = 11;
builder.Font.Bold = true;
builder.Write(text);
return rect;
}
// 创建连接线
public Shape CreateConnector(DocumentBuilder builder, double startX, double startY,
double endX, double endY, Color color)
{
Shape line = new Shape(document, ShapeType.Line);
line.Left = startX;
line.Top = startY;
line.Width = Math.Abs(endX - startX);
line.Height = Math.Abs(endY - startY);
line.Stroke.Color = color;
line.Stroke.Weight = 2.0;
line.Stroke.EndArrowType = ArrowType.Arrow;
line.WrapType = WrapType.None;
builder.CurrentParagraph.AppendChild(line);
return line;
}
// 对齐形状
public void AlignShapes(List<Shape> shapes, string alignment)
{
if (shapes.Count < 2) return;
switch (alignment.ToLower())
{
case "left":
double leftMost = shapes.Min(s => s.Left);
foreach (Shape shape in shapes) shape.Left = leftMost;
break;
case "top":
double topMost = shapes.Min(s => s.Top);
foreach (Shape shape in shapes) shape.Top = topMost;
break;
}
}
}
public void CreateFlowChart()
{
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
ShapeManager manager = new ShapeManager(doc);
builder.Font.Size = 16;
builder.Font.Bold = true;
builder.Writeln("业务流程图");
builder.Font.Bold = false;
builder.Writeln();
// 创建流程节点
Shape startNode = manager.CreateLabeledRectangle(builder, "开始", 100, 40, 50, 50, Color.LightGreen, Color.Green);
Shape processNode = manager.CreateLabeledRectangle(builder, "处理数据", 120, 50, 200, 50, Color.LightBlue, Color.Blue);
Shape decisionNode = manager.CreateLabeledRectangle(builder, "检查结果", 100, 60, 370, 45, Color.LightYellow, Color.Orange);
Shape endNode = manager.CreateLabeledRectangle(builder, "结束", 100, 40, 520, 50, Color.LightCoral, Color.Red);
// 创建连接线
manager.CreateConnector(builder, 150, 70, 200, 70, Color.Black);
manager.CreateConnector(builder, 320, 75, 370, 75, Color.Black);
manager.CreateConnector(builder, 470, 75, 520, 75, Color.Black);
// 添加说明
builder.Writeln();
builder.Writeln("上图展示了典型的业务流程,包含开始、处理、决策和结束节点。");
doc.Save("流程图示例.docx");
}
本教程介绍了Aspose.Words for .NET中图像和形状处理的核心功能:
通过合理运用这些功能,您可以创建包含丰富视觉元素的专业文档,提升文档的表现力和可读性。
Aspose.Words for .NET下载地址 https://soft51.cc/software/175811283999782847