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
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