دریافت مرزهای پاراگراف از ارائه‌ها در .NET

مرور کلی

این مقاله توضیح می‌دهد که چگونه می‌توان محدوده‌ها، اندازه و مختصات پاراگراف‌ها و بخش‌های متنی را در Aspose.Slides به دست آورد. نحوه بازیابی مستطیل یک پاراگراف در یک TextFrame با استفاده از GetRect()، دریافت مختصات پاراگراف و بخش درون یک فریم متنی سلول جدول، و جزئیات مهمی مانند واحدهای اندازه‌گیری، تأثیر بسته‌بندی متن بر محدوده‌ها، تبدیل به پیکسل و مقادیر قالب‌بندی مؤثر پاراگراف را نشان می‌دهد.

دریافت مختصات پاراگراف و بخش در یک TextFrame

با استفاده از Aspose.Slides برای .NET، توسعه‌دهندگان می‌توانند الآن مختصات مستطیلی پاراگراف را در مجموعه پاراگراف‌های یک TextFrame به دست آورند. همچنین امکان دریافت مختصات بخش درون مجموعه بخش‌های یک پاراگراف وجود دارد. در این بخش، با کمک یک مثال، نحوه دریافت مختصات مستطیلی پاراگراف به همراه مکان بخش درون پاراگراف را نشان می‌دهیم.

دریافت مختصات مستطیلی یک پاراگراف

متد جدید GetRect() اضافه شده است. این متد امکان دریافت مستطیل مرزی پاراگراف را فراهم می‌کند.

// یک شی Presentation ایجاد می‌کند که نمایانگر یک فایل ارائه است
using (Presentation presentation = new Presentation("Shapes.pptx"))
{
    IAutoShape shape = (IAutoShape)presentation.Slides[0].Shapes[0];
        var textFrame = (ITextFrame)shape.TextFrame;
        RectangleF rect = ((Paragraph)textFrame.Paragraphs[0]).GetRect();
}

دریافت اندازه یک پاراگراف و بخش درون فریم متنی سلول جدول

برای دریافت اندازه و مختصات Portion یا Paragraph در فریم متنی سلول جدول، می‌توانید از متدهای IPortion.GetRect و IParagraph.GetRect استفاده کنید.

این کد نمونه عملیات توضیح داده شده را نشان می‌دهد:

using (Presentation pres = new Presentation("source.pptx"))
{
    Table tbl = pres.Slides[0].Shapes[0] as Table;

    ICell cell = tbl.Rows[1][1];


    double x = tbl.X + tbl.Rows[1][1].OffsetX;
    double y = tbl.Y + tbl.Rows[1][1].OffsetY;

    foreach (IParagraph para in cell.TextFrame.Paragraphs)
    {
        if (para.Text == "")
            continue;

        RectangleF rect = para.GetRect();
        IAutoShape shape =
            pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle,
                rect.X + (float)x, rect.Y + (float)y, rect.Width, rect.Height);

        shape.FillFormat.FillType = FillType.NoFill;
        shape.LineFormat.FillFormat.SolidFillColor.Color = Color.Yellow;
        shape.LineFormat.FillFormat.FillType = FillType.Solid;


        foreach (IPortion portion in para.Portions)
        {
            if (portion.Text.Contains("0"))
            {
                rect = portion.GetRect();
                shape =
                    pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle,
                        rect.X + (float)x, rect.Y + (float)y, rect.Width, rect.Height);

                shape.FillFormat.FillType = FillType.NoFill;
            }
        }
    }
}

سؤالات متداول

مختصات بازگردانده شده برای یک پاراگراف و بخش‌های متنی به چه واحدی اندازه‌گیری می‌شوند؟

به واحد نقطه (point)؛ که 1 اینچ برابر 72 نقطه است. این واحد برای تمام مختصات و ابعاد روی اسلاید اعمال می‌شود.

آیا بسته‌بندی کلمات بر مرزهای پاراگراف تأثیر می‌گذارد؟

بله. اگر wrapping در TextFrame فعال باشد، متن برای پر کردن عرض ناحیه شکسته می‌شود و این باعث تغییر مرزهای واقعی پاراگراف می‌شود.

آیا می‌توان مختصات پاراگراف را به‌دقت به پیکسل‌ها در تصویر صادراتی تبدیل کرد؟

بله. نقطه‌ها به پیکسل با استفاده از رابطه زیر تبدیل می‌شوند: پیکسل = نقطه × (DPI / 72). نتیجه به DPI انتخاب‌شده برای رندر/صادرات وابسته است.

چگونه پارامترهای قالب‌بندی «مؤثر» پاراگراف را دریافت کنم که ارث‌بری سبک را در نظر بگیرد؟

از ساختار داده قالب‌بندی مؤثر پاراگراف استفاده کنید؛ این ساختار مقادیر نهایی ترکیبی برای تورفتگی‌ها، فاصله‌ها، بسته‌بندی، راست به چپ و موارد دیگر را برمی‌گرداند.