TForm.GetFormImage不能正确获取TRichEdit的图象,我急!(100分)

  • 主题发起人 主题发起人 zcg
  • 开始时间 开始时间
Z

zcg

Unregistered / Unconfirmed
GUEST, unregistred user!
目的:获取一个窗口的图象,该窗口的Left可能为1800,即当前屏幕看不到。

方法:用 TForm.GetFormImage 获取,窗口上 TMemo 的内容没有问题,
但 TRichEdit 内容死活就不出!

help me!
 
很有趣的问题啊,大家都试试吧。
 
如果是用richedit好像不能显示图片,用rxrichedit吧,它可以.
 
将RichEdit的内容输出到一个Image中,只要将Image设为足够大,即可得到RichEdit中的所有内容,
然后再 Image1.Picture.SaveToFile输出到一个BMP文件即可.

uses RichEdit;

procedure TForm1.Button1Click(Sender: TObject);
var
Range: TFormatRange;
LastChar, MaxLen, LogX, LogY: Integer;
begin
FillChar(Range, SizeOf(TFormatRange), 0);
with Image1, Range do
begin
LogX := GetDeviceCaps(Canvas.Handle, LOGPIXELSX);
LogY := GetDeviceCaps(Canvas.Handle, LOGPIXELSY);
hdc := Canvas.Handle;
hdcTarget := hdc;
rc.right := Image1.ClientWidth * 1440 div LogX;
rc.bottom := Image1.ClientHeight * 1440 div LogY;
rcPage := rc;
LastChar := 0;
MaxLen := GetTextLen;
chrg.cpMax := -1;
repeat
chrg.cpMin := LastChar;
LastChar := SendMessage(RichEdit1.Handle, EM_FORMATRANGE, 1,
Longint(@Range));
until (LastChar >= MaxLen) or (LastChar = -1);
end;
SendMessage(RichEdit1.Handle, EM_FORMATRANGE, 0, 0);
Image1.Refresh;
end;

 
接受答案了.
 
后退
顶部