文字显示问题 ( 积分: 100 )

  • 主题发起人 主题发起人 fslong
  • 开始时间 开始时间
F

fslong

Unregistered / Unconfirmed
GUEST, unregistred user!
已知起点和终点,显示一行文字.但每个字距要相等.字距随文字多少而改变字距.
 
如果起点和终点的长度不够呢?楼主问题问得不严谨啊!
试试,中文和英文混合都可以

procedure TForm1.Button1Click(Sender: TObject);
const
MyTextRect :TRect = (Left: 10; Top: 10; Right: 210; Bottom: 210);
var
I, perWidth, nCount: Integer;
boLeadByte : Boolean;
sCurText : string;
function ConfimTextCount():Integer;
var
i: Integer;
begin
Result := 0;
for i := 1 to Length(Edit1.Text) do
begin
if boLeadByte then
begin
boLeadByte := False;
continue;
end;
boLeadByte := IsDBCSLeadByte(Ord(Edit1.Text));
Inc(Result);
end;
end;
begin
perWidth := (MyTextRect.Right - MyTextRect.Left) div ConfimTextCount();
if perWidth < Canvas.TextWidth('W') then
Raise Exception.Create('No enugh space');
Canvas.FillRect(MyTextRect);
boLeadByte := false;
nCount := 1;
for I := 1 to Length(Edit1.Text) do
begin
if boLeadByte then
begin
boLeadByte := False;
continue;
end;
boLeadByte := IsDBCSLeadByte(Ord(Edit1.Text));
sCurText := PChar(@Edit1.Text);
if not boLeadByte then
SetLength(sCurText, 1)
else
SetLength(sCurText, 2);
Canvas.TextOut(MyTextRect.Left + (nCount - 1) * perWidth,
MyTextRect.Top,
sCurText
);
Inc(nCount);
end;
end;
 
to Miros:
可以分几行显示的
 
to Miros:
字体和字体大小如何改变呢?如:原字体大小是10,我改为20;原来是宋休,我改为其他字体呢?
 

Similar threads

回复
0
查看
848
不得闲
回复
0
查看
863
不得闲
D
回复
0
查看
824
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部