Bekezdés határok lekérése prezentációkból .NET-ben
Áttekintés
Ez a cikk bemutatja, hogyan lehet lekérni a bekezdések határait, méretét és koordinátáit az Aspose.Slides-ban. Megmutatja, hogyan lehet egy bekezdés téglalapot visszakapni egy ITextFrame segítségével a IParagraph.GetRect metódus használatával, hogyan lehet bekezdés koordinátákat szerezni egy táblázatcellás szövegkeretben, és kiemeli a fontos részleteket, például a mértékegységeket, a szövegtördelés hatását a határokra, a pixelbe való átváltást és a hatékony bekezdésformázási értékeket.
Bekezdés téglalap koordinátáinak lekérése
Használja az IParagraph.GetRect metódust a bekezdés határoló téglalapjának lekéréséhez.
using var presentation = new Presentation("Shapes.pptx");
var slide = presentation.Slides[0];
var shape = (IAutoShape)slide.Shapes[0];
var paragraph = shape.TextFrame.Paragraphs[0];
var rectangle = paragraph.GetRect();
A bekezdés méretének lekérése egy táblázatcellában lévő TextFrame-ben
A táblázatcellában lévő szövegkeretben lévő IParagraph méretének és koordinátáinak lekéréséhez használja az IParagraph.GetRect metódust. A visszaadott téglalap a táblázatcellához tartozó szövegkeretre vonatkozik, ezért, ha diaszintű koordinátákra van szüksége, adja hozzá a táblázat pozícióját és a cella eltolását.
A következő példa lekéri a bekezdés határait egy táblázatcellán belül, és téglalapokat rajzol a diára a határok megjelenítéséhez:
using var presentation = new Presentation("source.pptx");
var slide = presentation.Slides[0];
var table = (ITable)slide.Shapes[0];
var cell = table.Rows[1][1];
var cellX = table.X + cell.OffsetX;
var cellY = table.Y + cell.OffsetY;
foreach (var paragraph in cell.TextFrame.Paragraphs)
{
if (string.IsNullOrEmpty(paragraph.Text))
continue;
var paragraphRectangle = paragraph.GetRect();
var paragraphRectangleX = paragraphRectangle.X + (float)cellX;
var paragraphRectangleY = paragraphRectangle.Y + (float)cellY;
var paragraphBoundsShape = presentation.Slides[0].Shapes.AddAutoShape(
ShapeType.Rectangle,
paragraphRectangleX,
paragraphRectangleY,
paragraphRectangle.Width,
paragraphRectangle.Height);
paragraphBoundsShape.FillFormat.FillType = FillType.NoFill;
paragraphBoundsShape.LineFormat.FillFormat.SolidFillColor.Color = Color.Yellow;
paragraphBoundsShape.LineFormat.FillFormat.FillType = FillType.Solid;
}
presentation.Save("output.pptx", SaveFormat.Pptx);
GYIK
Milyen egységekben mérik a bekezdés koordinátáit?
A koordinátákat pontban (point) mérik, ahol egy hüvelyk 72 pontnak felel meg. Ez a dián minden koordinátára és méretre érvényes.
A szövegtördelés befolyásolja a bekezdés határait?
Igen. Ha a TextFrameFormat.WrapText be van kapcsolva az ITextFrame esetén, a szöveg megtörik, hogy illeszkedjen a terület szélességéhez, ami megváltoztatja a bekezdés tényleges határait.
A bekezdés koordinátái megbízhatóan leképezhetők pixelre az exportált képen?
Igen. A pontokat pixelekre a következő képlettel lehet átalakítani: pixel = pont × (DPI / 72). Az eredmény a rendereléshez vagy exportáláshoz választott DPI-től függ.
Hogyan kaphatom meg a „hatékony” bekezdésformázási paramétereket, figyelembe véve a stílus öröklődését?
Használja a effective paragraph formatting data structure struktúrát; ez visszaadja a végsokasú összevont értékeket a behúzásokra, a távolságokra, a tördelésre, a jobbról balra írásra (RTL) és egyebekre vonatkozóan.