请教如何实现使Textout的字符在一个矩形框的正中间? ( 积分: 300 )

  • 主题发起人 主题发起人 eastweast
  • 开始时间 开始时间
E

eastweast

Unregistered / Unconfirmed
GUEST, unregistred user!
在Paintbox的canvas上调用Ellipse画了一个矩形框,然后在矩形框的位置使用canvas.textout输出一些字符(都是数字)。
要求
1:矩形框刚好能框住这些字,又让这些字显示在矩形框的正中间。字体大小可以根据矩形框的大小而调整。
2:当鼠标移动到矩形框的位置的时候,可以在状态栏显示一些信息或者出现hint的信息。
3:有没有这种控件:可以根据事前定义好的一些坐标点画一定半径的圆圈,而且圆圈上可以出现点的序号信息
 
在Paintbox的canvas上调用Ellipse画了一个矩形框,然后在矩形框的位置使用canvas.textout输出一些字符(都是数字)。
要求
1:矩形框刚好能框住这些字,又让这些字显示在矩形框的正中间。字体大小可以根据矩形框的大小而调整。
2:当鼠标移动到矩形框的位置的时候,可以在状态栏显示一些信息或者出现hint的信息。
3:有没有这种控件:可以根据事前定义好的一些坐标点画一定半径的圆圈,而且圆圈上可以出现点的序号信息
 
-->> 如何实现使Textout的字符在一个矩形框的正中间?
试试用DrawText
 
procedure TForm1.Button1Click(Sender: TObject);
var
R:TRect;
ss:string;
begin
R:=Rect(10,10,200,50);
PaintBox1.Canvas.Rectangle(R);
ss:='wrltest';
DrawText(PaintBox1.Canvas.Handle,pchar(ss),-1,R,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
 
1,2 我认为你可以创建一个Label,Label可以透明,可以文本居中,可以有Hint等等,都可以满足你的要求。
 
谢谢各位,我试看看。
 
用这个API函数,
DrawText(PaintBox.Canvas.Handle,PChar(SS),-1,R,DT_CENTER or DT_SINGLELINE or DT_VCENTER);

不要忘了DT_SINGLELINE,否则垂直方向不能居中
 
当鼠标移动到矩形框的位置的时候,可以在状态栏显示一些信息或者出现hint的信息?

PtInRegion 可以判断鼠标位置是否在你指定的区域内,在则显示HINT信息
 
同意ttlove的意见,可以试试。
 
谢谢,DrawText和PInRegion函数已经可以实现了。

To:ttlove
如何显示Hint信息?
在 StatusBar上显示已经可以了。
 
处理PanitBox的OnMouseMove事件
 
// S 为要显示的文字
//Char_Rect := Rect(0, Char_y, Width, Char_y + FTitle_Font.Size * 2); 一个矩形
DrawText(Canvas.Handle, PChar(S), Length(S), Char_Rect, DT_CENTER or DT_TOP or DT_SINGLELINE);
用DrawText比用textout更灵活~!
 
用THintWindow.caption:=S

然后在PInRegion时THintWindow。Show;
 
我也贊同用DrawText輸出文字
 
多人接受答案了。
 

Similar threads

后退
顶部