在 Aspose.Drawing 中进行标注

介绍

欢迎来到我们关于在 Aspose.Drawing for .NET 中进行标注的分步指南!如果您希望通过标注来增强文档插图,那么您来对地方了。在本教程中,我们将使用 Aspose.Drawing 库将该过程分解为可管理的步骤。

先决条件

在深入学习本教程之前,请确保您满足以下先决条件:

  • C# 编程语言的基础知识。
  • Aspose.Drawing 库已安装。你可以下载它这里.
  • 要添加标注的文档或图像。

导入命名空间

确保您的项目中包含必要的命名空间:

using System.Text;
using System.Threading.Tasks;
using System;
using System.Drawing;
using System.Drawing.Text;
using System.IO;

第 1 步:加载图像

首先加载要添加标注的图像。代替"Your Document Directory""gears.png"与您的实际目录和图像文件名。

using (var image = Image.FromFile(Path.Combine("Your Document Directory", "gears.png")))
{
    //你的代码在这里
}

第2步:创建图形对象

创建一个Graphics从图像中提取对象来执行绘图操作。

var graphics = Graphics.FromImage(image);
graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
graphics.PageUnit = GraphicsUnit.Pixel;

第 3 步:定义标注位置

定义每个标注的起点和终点以及标注值和单位。

PointF startAnchor1 = new PointF(107, 55);
PointF endAnchor1 = new PointF(179, 5);
int value1 = 74;
string unit1 = "mm";
PointF startAnchor2 = new PointF(111, 146);
PointF endAnchor2 = new PointF(29, 180);
int value2 = 28;
string unit2 = "mm";

第四步:绘制标注

实施DrawCallOut方法在图像上绘制标注。

DrawCallOut(graphics, startAnchor1, endAnchor1, value1, unit1);
DrawCallOut(graphics, startAnchor2, endAnchor2, value2, unit2);

第 5 步:保存图像

将带有标注的图像保存到所需的目录。

image.Save(Path.Combine("Your Document Directory", "gears_with_callout_out.png"));

绘制标注源代码

void DrawCallOut(Graphics graphic, PointF startAnchor, PointF endAnchor, int value, string unit)
            {
                Pen pen = new Pen(Color.DarkGray, 1);
                Font font = new Font("Arial", 10, FontStyle.Bold);
                string outputValue = $"{value} {unit}";
                var textSize = graphic.MeasureString(outputValue, font);
                int diameterSymbolSize = 12;
                int spaceSize = 3;
                textSize.Width += diameterSymbolSize + spaceSize;
                float callOutMiddleX = endAnchor.X > startAnchor.X ? endAnchor.X - textSize.Width : endAnchor.X + textSize.Width;
                float callOutMiddleY = endAnchor.Y > startAnchor.Y ? endAnchor.Y - textSize.Height : endAnchor.Y + textSize.Height;
                graphic.DrawLine(pen, startAnchor.X, startAnchor.Y, callOutMiddleX, callOutMiddleY);
                float textAnchorX = Math.Min(callOutMiddleX, endAnchor.X);
                float textAnchorY = callOutMiddleY;
                graphic.DrawLine(pen, callOutMiddleX, callOutMiddleY, textAnchorX == callOutMiddleX ? textAnchorX + textSize.Width : textAnchorX, callOutMiddleY);
                graphic.DrawEllipse(pen, new Rectangle((int)textAnchorX + spaceSize, (int)(textAnchorY - textSize.Height) + spaceSize, 10, 10));
                graphic.DrawLine(pen, (int)textAnchorX + 1, (int)textAnchorY - 1, (int)textAnchorX + diameterSymbolSize + 2, (int)textAnchorY - diameterSymbolSize - 2);
                SolidBrush brush = new SolidBrush(Color.DarkGray);
                graphic.DrawString(outputValue, font, brush, (int)textAnchorX + diameterSymbolSize + spaceSize, (int)(textAnchorY - textSize.Height));
            }

结论

恭喜!您已使用 Aspose.Drawing for .NET 成功向图像添加标注。请随意尝试不同的位置和值,以进一步自定义您的标注。

常见问题解答

我可以将 Aspose.Drawing 用于其他类型的插图吗?

是的,Aspose.Drawing 支持各种类型插图的广泛绘图操作。

Aspose.Drawing 是否兼容不同的图像格式?

绝对地! Aspose.Drawing 支持流行的图像格式,如 PNG、JPEG、GIF 等。

在哪里可以找到更多示例和文档?

探索全面的文档这里.

如果遇到问题,我如何获得支持?

参观Aspose.Drawing 论坛以获得社区支持。

我可以在购买前试用 Aspose.Drawing 吗?

当然!开始免费试用这里.