ImageCanvas :=
Canvas;
with fmt do
begin
hdc:=
ImageCanvas.Handle;
hdcTarget:= hdc;
// rect needs to
be specified in twips (1/1440 inch) as unit
rc:= Rect(0, 0,
ImageCanvas.ClipRect.Right * 1440 div PixelsPerInch,
ImageCanvas.ClipRect.Bottom * 1440 div PixelsPerInch);
rcPage:= rc;
chrg.cpMin := 0;
chrg.cpMax :=
RichEdit.GetTextLen;
end;
SetBkMode(ImageCanvas.Handle, TRANSPARENT);
RichEdit.Perform(EM_FORMATRANGE, 1, Integer(@fmt));
// next call frees
some cached data
RichEdit.Perform(EM_FORMATRANGE, 0, 0);