Содержание материала

Чтобы вывести Rich Edit на любой канвас, нужно использовать стандартное сообщение EM_FORMATRANGE.

lParam пареметр этого сообщения содержит указатель на структуру TFormatRange.

Перед посылкой сообщения нужно заполнить эту структуру:

hdc - контекст устройства, на который будет выводиться Rich Edit

hdcTarget - контекст устройства, в соответствии с которым будет производиться форматирование текста

rc - область, в которую будет выводиться Rich Edit. Единицы измерения - твипсы (twips). Twips = 1/1440 дюйма.

rcPage - полная область вывода устройства (в твипсах)

chrg - указывает диапазон выводимого текста

 

chrg.cpMin и chrg.cpMax - позиции символов, определяющие кусок текста (не включая сами cpMin и cpMax)...

Code:

function PrintRTFToBitmap(ARichEdit : TRichEdit; ABitmap : TBitmap) : Longint;

var

range    : TFormatRange;

begin

FillChar(Range, SizeOf(TFormatRange), 0);

// Rendering to the same DC we are measuring.

Range.hdc        := ABitmap.Canvas.handle;

Range.hdcTarget  := ABitmap.Canvas.Handle;

 

// Set up the page.

Range.rc.left    := 0;

Range.rc.top     := 0;

Range.rc.right   := ABitmap.Width * 1440 div Screen.PixelsPerInch;

Range.rc.Bottom  := ABitmap.Height * 1440 div Screen.PixelsPerInch;

 

// Default the range of text to print as the entire document.

Range.chrg.cpMax := -1;

Range.chrg.cpMin := 0;

 

// format the text

Result := SendMessage(ARichedit.Handle, EM_FORMATRANGE, 1, Longint(@Range));

 

// Free cached information

SendMessage(ARichEdit.handle, EM_FORMATRANGE, 0,0);

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить