function GetObjectRenderedStrokePattern(Index: Integer): TBitmap;
| Index | Integer。以 0 起算的頁面物件索引,範圍為 0 .. ObjectCount - 1 |
| Result | TBitmap。新建立的點陣圖,由呼叫端擁有並負責釋放;當物件不是以平鋪圖樣描邊、缺少原生匯出,或渲染失敗時則傳回 nil |
當路徑物件的描邊色彩空間是 /Pattern 且使用 PatternType 1(平鋪)圖樣時,其輪廓會以重複的小單元而非單純顏色來上色。此方法透過原生 FPDFPageObj_GetRenderedStrokePattern 匯出單獨渲染該單元,呼叫端不必渲染整個頁面就能檢視、匯出或預覽圖樣
原生呼叫期間會持有渲染鎖,因此與同一個元件上的並發渲染一起使用是安全的。原生點陣圖會在傳回前完成轉換並釋放,產生的 TBitmap 歸呼叫端所有
呼叫時必須已有作用中的目前頁面。非路徑物件、以單純顏色或 shading 圖樣描邊的路徑,以及僅用於填色的圖樣,都會傳回 nil 而不是丟出例外;可透過 PageObjectInfo 或 PathInfo 進一步了解原因
彩色平鋪圖樣(PaintType 1)會以自身的顏色渲染;非彩色圖樣(PaintType 2)則以內容串流所選的描邊顏色渲染
nil 結果代表「沒有圖樣」還是「缺少匯出」
var
I: Integer;
Bmp: TBitmap;
begin
for I := 0 to Pdf1.ObjectCount - 1 do
begin
Bmp := Pdf1.GetObjectRenderedStrokePattern(I);
if Bmp <> nil then
try
Bmp.SaveToFile(Format('stroke-pattern-%d.bmp', [I]));
finally
Bmp.Free;
end;
end;
end;