pb静态文本背景透明实现原理

constructor事件:This.backcolor=2^29自定义事件ue_paint事件ID:pbm_paint代码:IFIsValid(This)THENifi... constructor事件:
This.backcolor = 2 ^ 29

自定义事件ue_paint 事件ID:pbm_paint 代码:
IF IsValid(This) THEN
if ib_painting THEN Return 0
ib_painting = True
This.Visible = False

Do While Yield()
Loop

This.Visible = True
ib_painting = False
END IF

Return 0

这样做确实可以使背景透明,但是当我把
Do While Yield()
Loop
这两句注释掉以后背景就不透明了
关于yield()函数无非是把控制权交给其他控件,到底是什么原因使文本背景透明的,谁能告诉一下
答得好再给50分
展开
 我来答
夜来雨早来晴
推荐于2016-01-03 · TA获得超过3.1万个赞
知道大有可为答主
回答量:9110
采纳率:60%
帮助的人:811万
展开全部
首先,你要区分文本框和静态文本框,这是两种不同的控件,透明方法完全不同!
静态文本框的默认背景是灰色,也就是对话框的“底色”。只有文本框(编辑框)的默认背景为白色。
如果是静态文本框,那么控件属性里设置选中TRANSPARENT,你上面的代码就可以了。
如果是编辑框,那么需要改变刷子hbr 为空画刷。但编辑框,只在OnCtrlColor里面做,效果是很差的,你需要处理OnEraseBackGround,最好能重载编辑框类,处理一下文字刷新,否则总是有显示BUG。
wy_1900
推荐于2018-03-13 · TA获得超过4503个赞
知道大有可为答主
回答量:4260
采纳率:63%
帮助的人:3392万
展开全部
This.backcolor = 2 ^ 29
这句话是把背景设置为透明色
因为需要API操作,很耗系统资源,所以增加
Do While Yield()
Loop
循环,使控制权到图形处理部分,并一直保持刷新。不然,背景很可能就闪一下,在别的控件刷新的时候就又不透明了
原来一直在用,没有用心想过这个问题
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式