在 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 嗎?

當然!開始免費試用這裡.