500分!1、设置richedit的左右缩进真正等于0。2、完全“所见既所得”的将richedit中全部内容保存为一个BMP图形文件。3、另有300分在我另外一

L

littley

Unregistered / Unconfirmed
GUEST, unregistred user!
500分!1、设置richedit的左右缩进真正等于0。2、完全“所见既所得”的将richedit中全部内容保存为一个BMP图形文件。3、另有300分在我另外一个帖子上给出(200分)<br />1、我设置 richedit1.leftindent:=0
richedit1.leftindent:=-5
均不能使richedit的左缩进真正为0,在RICHEDIT的每一行文字左边总空着几个象素。那位大侠有招
使richedit 的左右缩进真正为0?既每行第一个文字紧贴着RICHEDIT的左边界,不能有任何
多余的象素 (可得300分)
2、RICHEDIT中所有内容转化为BMP的方法(完全所见所得)可得500分,我再开二个送分帖子,分数不成问题
我现在使用如下方法:
///////////////////
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;
////////////////////////////////
这种方法得到得BMP图形与RICHEDIT的显示经常格式不一致,我认为原因是:
RICHEDIT的每一行文字左边总空着几个象素,而我上面RICHEDIT--》BMP的方法得到的BMP会
把RICHEDIT左右缩进的象素去掉,造成BMP一行能显示的文字有时比RICHEDIT多,也就是得到
的BMP和RICHEDIT的显示格式不一一对应。
大家有什么好意见吗?

3、另有300分在这个帖子上(我自己把问题解决了,呵呵)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1114791


 
增加:
Image1.height:=RichEdit1.height;
Image1.width:=RichEdit1.width-8;
试试,我测试过好像没问题。
 
:littley
我给你的答案如何?请表示意见!
 
linsb:
谢谢你的意见!我现在就是使用类似你的方法,不过我是增大RICHEDIT的尺寸,
因为我要的BMP图形的宽度是固定的。根据我以前的经验,在RICHEDIT中的
全文统一采用某些大小的字体时,这种方法工作得很好,但是,如果你全文使用了另外一种
大小的字体,又或者你在一篇文章中使用了不同的字体大小,一行中的文字有几部分有不
同大小,你就会发现得到的BMP图形和richedit的显示格式有出入,你多试几次就发现了。
不过还是要谢谢你给出有启发的建议!
另外:image1.height:=richedit1.height
只能得到RICHEDIT第一屏的内容,我要的是全文内容,不过这个问题我已经解决了,我那个帖子
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1114791
就是求如何确定image1.height的

 
这个问题我放弃了
 
解决了http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1117324
问题的人将得到这300分
 
不好意思,弄错了,这200分是linsb的,他的方法是有效的,不过我采用增大rxrichedit.width
的方法,需要rxrichedit1.width:=iamge1.width+12才能得到满意的效果
谢谢linsb大侠!
 
接受答案了.
 
顶部