canvas.textout输出文字重叠问题(在线等待)(100分)

  • 主题发起人 主题发起人 Chaos911
  • 开始时间 开始时间
C

Chaos911

Unregistered / Unconfirmed
GUEST, unregistred user!
做一个桌面时间显示练习,显示如下
image1.canvas.textout(5,20,inttostr(y)+' 年 '+inttostr(m)+' 月 '+inttostr(d)+' 日 ');
image1.Canvas.TextOut(5,40,vvh+':'+vvmin+':'+vvs);
Brush.Style := bsClear;
///////////////
用Brush.Style := bsClear;使image透明,但用了之后就canvas.textout输出的字体就重叠了(刷新后的显示在原来的字体上,原来的字不被刷掉),在没用Brush.Style := bsClear;之前可以正常,哪位大侠可以知道一下
 
Brush.Style := bsClear;应该在写之前执行?!
 
一样,用在timer里的,1秒刷一次
 
没清除!
 
清除的命令是什么
 
最简单的是用背景色画一个长方形。

但你可以不要设 Brush.Style := bsClear;
将 Brush 的颜色没为背景色,直接写文本就可以了,
文本不一样长,两边加空格。
 
背景色透明是哪个,bsnone?
 
如何使背景透明? 請看如下:
Image1.Canvas.Brush.Color:=Form1.Color;
Image1.Canvas.FillRect(Image1.ClientRect);
image1.canvas.textout(5,20,inttostr(y)+' 年 '+inttostr(m)+' 月 '+inttostr(d)+' 日 ');
image1.Canvas.TextOut(5,40,vvh+':'+vvmin+':'+vvs);
 
>>smokingroom
我的form1.color:=clwhite;,form1透明用的是setwindowlong(form1.Handle,gwl_exstyle,(getwindowlong(form1.Handle,gwl_exstyle)or ws_ex_transparent));,如果直接设窗体透明色的话怎么设(我在alphablend里试了,如果true的话,所有的控件都不显示了)
 
让背景透明
procedure TForm1.WMEraseBkgnd(var Msg: TWMEraseBkgnd);
begin
Canvas.Brush.Style:=bsClear;
end;
 
试试看吧,这两天被非典闹得,学校都放假了,明天回厦门,到了家再细心看看吧
 
要是文字在Image上呢?能不能透明且底下图片可见?
哇,现在可是谈非典色变啊...
据说杭州是已经买不到口罩了....
 
我们学校今天封校了,不让进出,亏得我昨天回的家
 
没一个可以解决的,我还是把分分了吧
 
你在刷新时用的是refresh方法吗?
若我记得没错,应当是不会清除原来内容的.
你可用 Invalidate 方法,他是重绘控件时,会清除canvas为空(是透明的)
 
后退
顶部