我用第一种方法:
Canvas.Rectangle(CurrRect);
Canvas.TextOut(CurrRect.Left+5,CurrRect.Top+5,'123456789');
矩形和字都出来了,但是不能把字限制在矩形区里,超出了。 我用第二种方法:
Canvas.Rectangle(CurrRect);
Canvas.TextRect(CurrRect,10,10,'123456789');
结果看见文字却不见了矩形,把上面两行换个顺序,结果看见了矩形看不见文字? 我该怎么办呢?
Canvas.Rectangle(CurrRect);
Canvas.TextOut(CurrRect.Left+5,CurrRect.Top+5,'123456789');
矩形和字都出来了,但是不能把字限制在矩形区里,超出了。 我用第二种方法:
Canvas.Rectangle(CurrRect);
Canvas.TextRect(CurrRect,10,10,'123456789');
结果看见文字却不见了矩形,把上面两行换个顺序,结果看见了矩形看不见文字? 我该怎么办呢?
s: string;
r: TRect;
begin
r.Left := 10;
r.Top := 10;
r.Right := 100;
r.Bottom := 100; s := 'Test1 Test2 Test3 Test4 Test5 Test7';
DrawText(Canvas.Handle, @s[1], Length(s), r, DT_LEFT or DT_WORDBREAK);
end;
SetBkMode(Canvas.Handle, TRANSPARENT);
或者:
Canvas.Brush.Style:= bsClear;
s: string;
r: TRect;
begin
r.Left := 10;
r.Top := 10;
r.Right := 100;
r.Bottom := 100; s := 'Test1 Test2 Test3 Test4 Test5 Test7';
DrawText(Canvas.Handle, @s[1], Length(s), r, DT_LEFT or DT_WORDBREAK);
end;----------------------
这个行,好使
Canvas.TextRect(CurrRect,10,10,'123456789');
结果看见文字却不见了矩形,把上面两行换个顺序,结果看见了矩形看不见文字?
-----------------------------------
看见文字看不见矩形,是因为文字框与矩形一样大小,你可以把文字框缩小5个像数点就比较像输入框了
看见矩形不见文字,是因为矩形在文字框上层,可以用SendToBack/SendToFront调整层显
r.Left:= 0;
r.Top := 0;
r.Right := 100;
r.Bottom:= 100; Canvas.Rectangle(r); //画矩形 inc(r.Left, 5);
inc(r.Top, 5);
dec(r.Right, 5);
dec(r.Bottom,5); SetBkMode(Canvas.Handle, TRANSPARENT); //设置文字背景透明
DrawText(Canvas.Handle, PChar(s), Length(s), r, DT_LEFT or DT_WORKBREAK); //在矩形内输出文字并自动换行
-------------------------------------------
Delphi7下测试代码是符合你的要求的. 并不需要空格.
procedure TForm1.Button1Click(Sender: TObject);
var
r: TRect;
s: string;
begin
s:= '测试字符串测试字符串测试字符串测试字符串测试字符串测试字符串测试字符串测试字符串'; r.Left:= 0;
r.Top := 0;
r.Right := 100;
r.Bottom:= 100; Canvas.Rectangle(r); //画矩形 inc(r.Left, 5);
inc(r.Top, 5);
dec(r.Right, 5);
dec(r.Bottom,5); SetBkMode(Canvas.Handle, TRANSPARENT); //设置文字背景透明
DrawText(Canvas.Handle, PChar(s), Length(s), r, DT_LEFT or DT_WORDBREAK); //在矩形内输出文字并自动换行
end;