function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer. Indeks liczony od zera pierwszego znaku w mierzonym segmencie. Domyślnie 0 |
| Count | Integer. Liczba znaków uwzględnianych w pomiarze, licząc od StartIndex. Domyślnie MaxInt, co obejmuje wszystkie pozostałe znaki na stronie |
Rectangle[0] do Rectangle[RectangleCount - 1]RectangleCount wyznacza zbiór prostokątów ograniczających, które wspólnie pokrywają ciągły ciąg znaków na bieżącej stronie. Znaki w tej samej linii, które współdzielą te same ustawienia czcionki, są automatycznie scalane w pojedynczy prostokąt, co redukuje wynik do minimalnej liczby nienakładających się prostokątów potrzebnych do podświetlenia tekstu
Parametry StartIndex i Count definiują mierzony segment znaków. Typowe zastosowanie to przekazanie indeksu dopasowania zwróconego przez FindFirst lub FindNext jako StartIndex oraz długości wyszukiwanego ciągu jako Count, aby uzyskać prostokąty podświetlenia dla wyniku wyszukiwania
Zwrócone prostokąty są przechowywane w wewnętrznym buforze i pozostają ważne do następnego wywołania RectangleCount. Pobierz każdy prostokąt, odczytując właściwość Rectangle[Index] dla Index z zakresu od 0 do RectangleCount - 1. Wszystkie współrzędne są w jednostkach przestrzeni użytkownika PDF (punkty, początek układu w lewym dolnym rogu)
Do zwykłego zliczenia wszystkich znaków na stronie użyj CharacterCount; aby ustalić, gdzie na stronie znajduje się konkretny znak, użyj CharacterIndexAtPos
var
MatchIdx, RCount, I: Integer;
Rect: TPdfRectangle;
begin
Pdf1.PageIndex := 0;
MatchIdx := Pdf1.FindFirst('PDFium');
if MatchIdx >= 0 then
begin
RCount := Pdf1.RectangleCount(MatchIdx, Length('PDFium'));
for I := 0 to RCount - 1 do
begin
Rect := Pdf1.Rectangle[I];
// Draw a highlight box using Rect.Left/Top/Right/Bottom
Memo1.Lines.Add(Format('Rect %d: (%.1f, %.1f, %.1f, %.1f)',
[I, Rect.Left, Rect.Bottom, Rect.Right, Rect.Top]));
end;
end;
end;